GNU/Linux >> Tutoriels Linux >  >> Linux

Comment puis-je supprimer de manière récursive tous les fichiers et répertoires vides sous Linux ?

Il s'agit d'une ligne très simple :

find Parent -empty -delete

C'est assez explicite. Bien que lorsque j'ai vérifié, j'ai été surpris qu'il supprime avec succès Parent/Child1. Habituellement, vous vous attendez à ce qu'il traite le parent avant l'enfant, sauf si vous spécifiez -depth .

Cela fonctionne car -delete implique -depth . Voir le manuel de recherche GNU :

-delete Supprimer les fichiers; true si la suppression a réussi. Si la suppression a échoué, un message d'erreur est émis. Si -delete échoue, le statut de sortie de find sera différent de zéro (lorsqu'il finira par se terminer). L'utilisation de -delete active automatiquement l'option -depth.

Notez que ces fonctionnalités ne font pas partie du standard Posix, mais qu'elles seront probablement présentes dans de nombreuses distributions Linux. Vous pouvez avoir un problème spécifique avec les plus petits tels que Alpine Linux car ils sont basés sur Busybox qui ne prend pas en charge -empty .

Autres systèmes qui incluent -empty non standard et -delete inclure BSD et OSX mais apparemment pas AIX.


Voici une solution à deux commandes

Supprimer les fichiers vides

find Parent/ -type f -size 0 -delete

Essayez de supprimer tous répertoires

find Parent/ -type d -depth -print0 | xargs -0 rmdir 2>/dev/null

NB rmdir ne peut pas supprimer les répertoires non vides, il est donc sûr de l'exécuter mais produira des erreurs, que nous cachons

Comme ci-dessus, mais en étant un peu plus précis sur les messages d'erreur ignorés. Il peut être nécessaire de modifier si le message varie d'une distribution à l'autre.

find Parent/ -type d -depth -print0 | xargs -0 rmdir 2>&1 \
  | grep -iv "Directory not empty$"

Vous pouvez également le faire avec le fd outil :

fd -t e -x rm -r

https://github.com/sharkdp/fd


Linux
  1. Comment rechercher et supprimer des répertoires de manière récursive sous Linux

  2. Linux Supprimer des fichiers et des répertoires

  3. Comment lister récursivement tous les fichiers et répertoires

  4. Rechercher et supprimer tous les répertoires nommés test sous Linux

  5. comment puis-je supprimer récursivement des répertoires vides dans mon répertoire personnel ?

Comment compresser des fichiers et des répertoires sous Linux

Comment rechercher et répertorier récursivement les fichiers par date sous Linux

Comment rechercher et supprimer des fichiers en double sous Linux

Comment rechercher et supprimer des répertoires vides sous Linux

Trouvez facilement des fichiers et des répertoires sur Linux

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux