Comment puis-je supprimer tous les fichiers .swp de tous mes sous-répertoires sous Linux ?
Réponses
Trop de publicités?Pour supprimer tous les fichiers *.swp se trouvant sous le répertoire actuel, utilisez la fonction find
dans l'une des formes suivantes :
-
find . -name \*.swp -type f -delete
El
-delete
l'option signifie que find va directement supprimer les fichiers correspondants. C'est ce qui correspond le mieux à la question de l'OP.Utilisation de
-type f
signifie que find ne traitera que les fichiers. -
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
Option
-exec
permet à find d'exécuter une commande arbitraire par fichier. La première variante exécutera la commande une fois par fichier, et la seconde exécutera le moins de commandes possible en remplaçant{}
avec le plus grand nombre de paramètres possible. -
find . -name \*.swp -type f -print0 | xargs -0 rm -f
Transférer la sortie vers
xargs
est utilisé pour des commandes par fichier plus complexes que ce qui est possible avec-exec
. L'option-print0
dit àfind
pour séparer les correspondances avec ASCII NULL au lieu d'une nouvelle ligne, et-0
dit àxargs
pour s'attendre à une entrée séparée par NULL. Cela rend la construction pipe sûre pour les noms de fichiers contenant des espaces.
参照 man find
pour plus de détails et d'exemples.
Pour effectuer une recherche dans mon répertoire personnel (et utiliser les outils GNU 'find' et 'xargs'), j'utiliserais :
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
L'utilisation de ' -print0
et -0
' signifie que les noms seront délimités par des NULs ASCII '. \0 Cela permet de gérer les chemins d'accès aux fichiers dont les noms contiennent des blancs, etc. Si vous pensez avoir des répertoires (ou des fichiers de périphérique, ou des FIFO, ou d'autres fichiers) sous votre répertoire se terminant par '.swp', vous pouvez ajouter le caractère ' -type f
à l'option "trouver". Si vous n'avez que des répertoires, la commande ci-dessus ne parviendra pas à les supprimer bruyamment.