Comment supprimer les fichiers récursivement dans Linux

Comment supprimer les fichiers récursivement dans Linux
Ce tutoriel Linux explique comment supprimer les fichiers récursivement à l'aide de différentes techniques disponibles.

Après avoir lu cet article, vous pourrez trouver et supprimer des fichiers uniques ou multiples de la ligne de commande. Ce tutoriel est optimisé pour les utilisateurs de Linux nouveaux et expérimentés.

La première section de ce tutoriel explique comment supprimer les fichiers récursivement (répertoires avec tout leur contenu et contenu de sous-répertoire). Ci-dessous, j'ai également ajouté des instructions pour supprimer de manière récursive certains types de fichiers en fonction de leur taille, de leur extension, de leur temps de création ou de modification, et des autorisations.

Tous les exemples pratiques de ce document contiennent des captures d'écran pour faciliter la compréhension de chaque utilisateur de Linux et de les appliquer à leurs besoins.

Suppression de tous les fichiers récursivement dans Linux

La première section montre comment utiliser le RM (Supprimer) Commande pour supprimer un répertoire avec tout son contenu, y compris toutes les sous-répertoires avec leurs fichiers et des sous-répertoires supplémentaires.

Le RM commande utilisée avec -r Le drapeau supprimera tous les répertoires du contenu indépendamment de leur type.

Mais d'abord, voyons les répertoires de ma maison en utilisant le LS commande.

ls ~ /


Comme vous pouvez le voir, j'ai 5 répertoires: Bureau, dir2, documents, téléchargements, et removerecurdir.

Voyons le contenu du répertoire nommé removerecurdir en utilisant la commande arbre Comme indiqué dans la capture d'écran ci-dessous.

Removerecurdir d'arbre



Selon le arbre sortir le removerecurdir Le répertoire contient deux répertoires contenant des sous-répertoires et un fichier à l'intérieur removecurdir: Le répertoire dir1, avec autre dir et autredir2 sous-répertoires et répertoire dir2 contient un fichier nommé fichier3.

Disons que nous voulons supprimer le removecurdir et tout son contenu, y compris tous les fichiers et sous-répertoires. La commande appropriée est le RM commande suivie par le -r Flag comme indiqué dans la syntaxe ci-dessous.

rm -r


Ainsi, si je veux supprimer le removerecurdir Avec tout le contenu, je cours:

rm -r removerecurdir /



Le suivant LS La sortie montre le répertoire, et tout son contenu a été supprimé avec succès.

Comment supprimer les fichiers récursivement par taille

Cette section montre comment supprimer récursivement des fichiers inférieurs à 10 mégaoctets à l'aide de la commande trouver.

La syntaxe est la suivante:

trouver -Type F-Size - -exec rm +


Note que dans l'exemple ci-dessous, j'utilise Sudo Pour obtenir des privilèges pour supprimer les fichiers protégés.

sudo find / var / log -type f -size -10m -exec rm +



La syntaxe pour supprimer des fichiers supérieure à une taille spécifique est très similaire. Le symbole moins (-) doit être remplacé par un symbole plus (+). La syntaxe exacte est illustrée ci-dessous.

trouver -Type F-Size + -exec rm +


Dans l'exemple ci-dessous, j'utiliserai la syntaxe précédente pour supprimer des fichiers supérieurs à 1 Go.

find / var / log -type f -size + 1g -exec rm +


Comment supprimer les fichiers récursivement par extension (type de fichier)

Le chapitre actuel explique comment supprimer les fichiers récursivement par extension ou type de fichier.

Sur ma maison, j'ai un répertoire nommé testhint. Voyons son contenu en utilisant le arbre commande.

Tree TestHint /



Comme vous pouvez le voir, le répertoire parent TestHint contient un fichier (fichier1.txt) et deux sous-répertoires: TestHint2 contenant le fichier3.txt et le sous-répertoire TestHint3 contenant un fichier3 et quelque chose.SMS.

Supposons que vous souhaitez supprimer récursivement tous les fichiers txt uniquement. La syntaxe est la suivante:

trouver -Tapez f -name '*.'-print -delete


Ainsi, pour supprimer tous les fichiers txt récursivement dans le répertoire parent testhint, J'exécute la commande illustrée dans la figure ci-dessous.

trouver ~ / TestHint -Type f -Name '*.txt '-print -delete



Comme vous pouvez le voir, tous les fichiers txt ont été supprimés, et seulement fichier3 Sans extension reste.

Testhint d'arbre


Vous pouvez également supprimer des fichiers par extension en utilisant trouver ensemble avec exécutif commandes, comme je vais expliquer ci-dessous.

Voyons un nouveau scénario avec la même structure de répertoire mais différents fichiers.


L'image ci-dessus montre 4 fichiers journaux et 3 fichiers sans extension.

La syntaxe pour supprimer les fichiers par extensions en utilisant -exécutif est le suivant:

trouver -Tapez f -name '*.'-exec rm -f \;


Ainsi, pour supprimer le .Fichiers journaliers à partir de la capture d'écran précédente, j'ai exécuté la commande ci-dessous.

trouver ~ / TestHint -Type f -Name '*.log '-exec rm -f \;



L'image ci-dessus montre tout .enregistrer Les fichiers ont été supprimés tandis que d'autres fichiers sont restés.

Le xargs La commande offre la même solution. La différence entre xargs et exécutif Est-ce que Exec exécute la fonction RM chaque fois qu'un fichier correspond à la condition. La commande xargs exécute la commande RM une fois pour tous les fichiers trouvés correspondant à la condition.

La syntaxe pour supprimer tous les fichiers par extension avec find et xargs est la suivante:

trouver -nom "*."-print0 | xargs -0 RM


Le nouveau scénario représenté dans la capture d'écran ci-dessous montre cinq .C fichiers C dans différents sous-répertoires et cinq fichiers sans le .C extension.


Pour supprimer tout .c Fichiers à l'aide xargs J'exécute la commande comme indiqué ci-dessous.

trouver . -nom "*.C "-print0 | xargs -0 RM



Encore une fois, vous pouvez voir que les fichiers d'extension sélectionnés ont été supprimés avec succès.

Suppression de tous les fichiers récursivement en fonction des autorisations

Vérifions le nouveau contenu du testhint annuaire.

Il y a quatre fichiers avec des autorisations complètes (fichier2, fichier3.C, fichier6.C et fichier7).

Supposons maintenant que vous souhaitez trouver et supprimer tous les fichiers avec des autorisations complètes pour tout le monde.

La syntaxe est la suivante:

trouver -permanente -print0 | xargs -0 rm


Ainsi, pour supprimer tous les fichiers avec un accès complet à tous les utilisateurs, j'exécute la commande ci-dessous.

Find ~ / TestHint -Perm 777 -print0 | xargs -0 rm


Comment supprimer les fichiers récursivement en fonction de la modification ou du temps de création

La dernière section de ce tutoriel explique comment supprimer les fichiers récursivement par la création ou le temps de modification.

La syntaxe est la suivante:

Find ~ / TestHint -Perm 777 -print0 | xargs -0 rm


Si vous souhaitez supprimer des fichiers créés ou modifiés au cours du dernier jour (dernières 24 heures), exécutez la commande suivante, où 1 est le nombre de jours, et le symbole moins (-) spécifie les fichiers créés ou modifiés avant le nombre défini de jours.

trouver -Tapez f -mtime -1 -delete


Pour supprimer les fichiers créés ou modifiés avant une journée, avant 24 heures, remplacez simplement le symbole moins pour un symbole plus.

trouver -Tapez f -mtime +1 -delete

Conclusion

Étant donné que Linux est un système d'exploitation très polyvalent et flexible, les utilisateurs ont des techniques différentes pour obtenir le même résultat. Toutes les alternatives expliquées ci-dessus sont valables pour presque toutes les distributions Linux. Certaines commandes sont même utiles pour certains systèmes UNIX. Comme vous pouvez le voir, les implémenter est facile et tout utilisateur de Linux peut le faire indépendamment de son niveau de connaissance. Pour supprimer les fichiers récursivement en fonction d'autres conditions, consultez la page principale de chaque commande décrite dans cet article.