La gestion de fichiers est l’une des tâches courantes qu’un utilisateur entreprend sur un système Linux, qui comprend la création, la copie, le déplacement, la modification et la suppression de fichiers et de répertoires.
Cet article fournit quelques conseils de ligne de commande sur la façon dont vous pouvez supprimer un répertoire volumineux contenant des milliers de fichiers dans un système Linux.
Supprimer des fichiers sous Linux
La manière la plus courante de supprimer des fichiers sur un système Linux consiste à utiliser la commande rm, qui prend le format de syntaxe suivant :
$ rm [ options ] sample_file.txt
Par exemple, pour supprimer un fichier texte appelé fichier1.txtexécutez la commande :
$ rm file1.txt
Pour supprimer un fichier de force sans qu’on vous demande la permission, passez le -f
drapeau comme suit.
$ rm -f file1.txt
Supprimer le répertoire sous Linux
Pour supprimer ou supprimer un répertoire appelé sample_directoryexécutez la commande suivante :
$ rm -rf sample_directory
Le -r
L’option supprime récursivement le répertoire ainsi que tous les sous-répertoires et fichiers qu’il contient.
Pour supprimer ou supprimer un répertoire vide, utilisez la commande rmdir, qui est pratique lorsque vous souhaitez supprimer un répertoire vide appelé test_directory comme montré:
$ rmdir test_directory
Supprimer un grand répertoire avec des tonnes de fichiers
Quand le commande rm est exécuté, le système de fichiers supprime uniquement le lien vers le fichier, ce qui rend le fichier indisponible pour l’utilisateur, mais dans le sens réel, les données du fichier elles-mêmes restent intactes sur le disque.
Par conséquent, lorsque le commande rm est émis, seule la référence aux fichiers est supprimée, ce qui libère les blocs de stockage dans le système de fichiers.
En tant que tel, il existe plusieurs moyens de supprimer des fichiers sous Linux.
Supprimer les fichiers avec le numéro d’inode sous Linux
Par exemple, vous pouvez supprimer un fichier en utilisant son numéro d’inode. Vous pouvez trouver le numéro d’inode d’un fichier en utilisant la commande stat comme indiqué.
$ stat file1.txt File: file.txt Size: 4076 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 1573697 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ tecmint) Gid: ( 1000/ tecmint) Access: 2023-05-08 12:10:55.656070248 +0530 Modify: 2023-05-08 12:10:55.656070248 +0530 Change: 2023-05-08 12:10:55.656070248 +0530
De plus, vous pouvez passer le -i
flag dans la commande ls lors de la liste des fichiers dans un répertoire.
$ ls -li 1573697 .rw-rw-r-- tecmint tecmint 4.0 KB Mon May 8 12:10:55 2023 file1.txt
Pour supprimer le fichier à l’aide de son inode, utilisez la commande find comme indiqué dans la syntaxe ci-dessous.
$ find /path/to/file -inum INODE_NUM -exec rm -i {} +
Dans notre exemple, pour supprimer le fichier fichier1.txt qui se trouve dans le répertoire courant, la commande sera :
$ find /path/to/file -inum 1573697 -exec rm -i {} +
Frapper 'y'
pour confirmer la suppression et appuyez sur ENTRER.
Voyons maintenant comment supprimer de gros répertoires avec des milliers de fichiers.
Créer un répertoire avec des milliers de fichiers
Le bon vieux rm La commande est le moyen le plus rapide de supprimer un grand répertoire avec des milliers de fichiers. Pour le démontrer, nous allons d’abord créer un exemple de répertoire et y naviguer.
$ mkdir test_dir $ cd test_dir
Ensuite, nous allons créer un nombre incroyablement élevé de fichiers, dans ce cas, 500 000 fichiers texte en utilisant le bash suivant pour une boucle.
$ time for item in {1..500000}; do touch file_name$item.txt; done
NOTE: La commande ci-dessus est gourmande en ressources et, par conséquent, consomme beaucoup de CPU et de RAM. Cela prend également un certain temps en fonction des spécifications de votre système. Dans mon cas, j’utilise une machine virtuelle avec 4 Go de RAM et 3 processeurs.
Le moyen le plus rapide de supprimer un répertoire sous Linux
Le moyen le plus rapide de supprimer un grand répertoire consiste à utiliser le bon vieux rm répertoire comme indiqué ci-dessous. Ici, l’option time affiche le temps nécessaire pour exécuter avec succès la commande.
$ time rm -rf /test_dir
À partir de la sortie, vous pouvez voir qu’il a fallu environ 6 secondes pour supprimer l’intégralité du répertoire.
Supprimer un grand répertoire avec la commande Rechercher
Une autre façon de supprimer des répertoires volumineux consiste à utiliser la commande find comme indiqué dans la syntaxe suivante.
$ time find /path/to/directory -delete
Bien que pas aussi rapide que le rm commande, il fait toujours le travail.
$ time find test_dir -delete
Supprimer un grand répertoire avec la commande Perl
Une autre approche consiste à utiliser le perle langage de script à l’intérieur du répertoire pour supprimer des tonnes de fichiers.
$ cd test_dir $ time perl -e 'for(<*>){((stat)[9]<(unlink))}'
À partir de la sortie, vous pouvez constater qu’il a fallu beaucoup plus de temps pour supprimer tous les fichiers du répertoire que les commandes précédentes que nous avons examinées précédemment.
Conclusion
Voilà. Dans ce guide, nous avons vu comment vous pouvez supprimer des répertoires volumineux contenant des milliers de fichiers sur un système Linux.