Supprimer les fichiers correspondants dans tous les sous-répertoires


77

Comment puis-je supprimer tous les fichiers .swp de tous mes sous-répertoires sous Linux?


3
N'oubliez pas de regarder des programmes tels que trash-cli pour pouvoir annuler la suppression au lieu d'utiliser rm. code.google.com/p/trash-cli (Vous voudriez simplement remplacer "rm" par "trash" dans toutes les réponses ci-dessous.)

Réponses:


137

Supprimez tous les fichiers * .swp situés sous le répertoire en cours, utilisez la findcommande sous l’une des formes suivantes:

  • find . -name \*.swp -type f -delete

    L' -deleteoption signifie find supprimera directement les fichiers correspondants. C'est la meilleure correspondance avec la question réelle de OP.

    Utiliser -type fmoyens find ne traitera que les fichiers.

  • find . -name \*.swp -type f -exec rm -f {} \;
    find . -name \*.swp -type f -exec rm -f {} +

    L'option -execpermet à 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 xargsest utilisé pour former des commandes par fichier plus complexes qu’il n’est possible avec -exec. L'option -print0indique findde séparer matchs avec NULL ASCII au lieu d'un saut de ligne, et -0dit xargsd'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 findpour plus de détails et exemples.


16

find . -name '*.swp' -delete

Après avoir trouvé find, supprimez lui-même tous les risques liés à l'espace incorporé dans le nom du fichier, ... Pour plus de sécurité, envisagez également l'ajout -type fpour les fichiers uniquement.


4
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

2

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 foption « » à «rechercher». Si vous ne disposez que de répertoires, la commande ci-dessus ne parvient pas à les supprimer bruyamment.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.