Come posso rimuovere tutti i file .swp in tutte le mie sottodirectory sotto Linux?
Come posso rimuovere tutti i file .swp in tutte le mie sottodirectory sotto Linux?
Risposte:
Rimuovere tutti i file * .swp sotto la directory corrente, utilizzare il find
comando in uno dei seguenti moduli:
find . -name \*.swp -type f -delete
L' -delete
opzione significa che trova eliminerà direttamente i file corrispondenti. Questa è la migliore corrispondenza alla vera domanda dell'OP.
L'uso di -type f
find consente di elaborare solo i file.
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
L'opzione -exec
consente 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
xargs
Viene utilizzato
il piping dell'output da comandi per file più complessi di quanto sia possibile con -exec
. L'opzione -print0
dice find
di separare le corrispondenze con ASCII NULL anziché una nuova riga e -0
dice xargs
di aspettarsi un input separato da NULL. Questo rende il costrutto pipe sicuro per i nomi di file contenenti spazi bianchi.
Vedi man find
per maggiori dettagli ed esempi.
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 f
opzione ' ' a 'find'. Se hai solo directory, il comando sopra non riuscirà a rimuoverle rumorosamente.