Comment puis-je supprimer tous les fichiers .swp de tous mes sous-répertoires sous Linux?
Comment puis-je supprimer tous les fichiers .swp de tous mes sous-répertoires sous Linux?
Réponses:
Supprimez tous les fichiers * .swp situés sous le répertoire en cours, utilisez la find
commande sous l’une des formes suivantes:
find . -name \*.swp -type f -delete
L' -delete
option signifie find supprimera directement les fichiers correspondants. C'est la meilleure correspondance avec la question réelle de OP.
Utiliser -type f
moyens 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 autant de paramètres que possible.
find . -name \*.swp -type f -print0 | xargs -0 rm -f
Le piping vers la sortie xargs
est utilisé pour former des commandes par fichier plus complexes qu’il n’est possible avec -exec
. L'option -print0
indique find
de séparer matchs avec NULL ASCII au lieu d'un saut de ligne, et -0
dit xargs
d'attendre l' entrée séparée 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 exemples.
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 chercher dans mon répertoire personnel (et utiliser GNU 'find' et 'xargs'), j'utilisais:
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 de fichiers avec des blancs, etc., dans les noms. 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' -type f
option « » à «rechercher». Si vous ne disposez que de répertoires, la commande ci-dessus ne parvient pas à les supprimer bruyamment.