Comment puis-je supprimer tous les fichiers .swp de tous mes sous-répertoires sous Linux?
Supprimez tous les fichiers * .swp situés sous le répertoire en cours, utilisez la commande find
sous l'une des formes suivantes:
find . -name \*.swp -type f -delete
L'option -delete
signifie que find supprimera directement les fichiers correspondants. C'est la meilleure correspondance avec la question réelle de OP.
Utiliser -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 {} +
L'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 {}
par le plus grand nombre de paramètres possible.
find . -name \*.swp -type f -print0 | xargs -0 rm -f
La transformation de xargs
dans la sortie est utilisée sous forme de commandes par fichier plus complexes que ce qui est possible avec -exec
. L'option -print0
indique à find
de séparer les correspondances avec ASCII NULL au lieu d'une nouvelle ligne, et -0
indique à xargs
d'attendre une entrée séparée de NULL. Cela rend la construction de tuyau sûre pour les noms de fichiers contenant des espaces.
Voir man find
pour plus de détails et d’exemples.
find . -name '*.swp' -delete
Si find a été supprimé, supprimez lui-même tous les risques liés à l’espace inséré dans le nom du fichier, ... Pour une sécurité accrue, envisagez également d’ajouter -type f
aux fichiers uniquement.
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;
bash 4.0
shopt -s globstar
rm -f /path/**/*.swp
Pour effectuer une recherche dans mon répertoire personnel (et utiliser 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 caractères ASCII NUL '\ 0', ce qui gérera les chemins d'accès aux fichiers avec des blancs, etc. Si vous pensez que votre répertoire contient des répertoires (ou des fichiers de périphérique, des fichiers FIFO ou autres) se terminant par «.swp», vous pouvez ajouter l'option «-type f
» à «rechercher». Si vous ne disposez que de répertoires, la commande ci-dessus ne parvient pas à les supprimer bruyamment.