Elimina i file corrispondenti in tutte le sottodirectory


77

Come posso rimuovere tutti i file .swp in tutte le mie sottodirectory sotto Linux?


3
Non dimenticare di guardare programmi come trash-cli in modo da poter annullare l'eliminazione, invece di utilizzare rm. code.google.com/p/trash-cli (Sostituiresti semplicemente "rm" con "cestino" in tutte le risposte sottostanti.)

Risposte:


137

Rimuovere tutti i file * .swp sotto la directory corrente, utilizzare il findcomando in uno dei seguenti moduli:

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

    L' -deleteopzione significa che trova eliminerà direttamente i file corrispondenti. Questa è la migliore corrispondenza alla vera domanda dell'OP.

    L'uso di -type ffind consente di elaborare solo i file.

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

    L'opzione -execconsente a find di eseguire un comando arbitrario per file. La prima variante eseguirà il comando una volta per file e la seconda eseguirà il minor numero di comandi possibile sostituendo il {}maggior numero possibile di parametri.

  • find . -name \*.swp -type f -print0 | xargs -0 rm -f

    xargsViene utilizzato il piping dell'output da comandi per file più complessi di quanto sia possibile con -exec. L'opzione -print0dice finddi separare le corrispondenze con ASCII NULL anziché una nuova riga e -0dice xargsdi aspettarsi un input separato da NULL. Questo rende il costrutto pipe sicuro per i nomi di file contenenti spazi bianchi.

Vedi man findper maggiori dettagli ed esempi.


16

find . -name '*.swp' -delete

Dopo aver trovato l'eliminazione stessa, rimuovi qualsiasi rischio per lo spazio incorporato nel nome file, ... Per una maggiore sicurezza, considera anche l'aggiunta -type fsolo per i file.


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

Per cercare nella mia directory home (e usando GNU 'find' e 'xargs'), userei:

find $HOME -name '*.swp' -print0 | xargs -0 rm -f

L'uso di ' -print0' e ' -0' significa che i nomi saranno delimitati da caratteri ASCII NUL '\ 0' e questo gestirà i percorsi dei file con spazi vuoti ecc. Nei nomi. Se pensi di avere directory (o file di dispositivo, o FIFO o altri non-file) nella tua directory che terminano con '.swp', puoi aggiungere l' -type fopzione ' ' a 'find'. Se hai solo directory, il comando sopra non riuscirà a rimuoverle rumorosamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.