Come posso eliminare tutti i file con un determinato nome in tutte le sottodirectory?


25

Voglio eliminare tutti i file con un determinato nome in tutte le sottodirectory della mia home directory.

Provai:

rm -r file

nella mia home directory, ma non ha funzionato perché quel file non esiste in quella directory.

Risposte:



12

come elaborazione della risposta di @ tante, potresti voler verificare che l'elenco dei file utilizzato sia corretto prima di eliminare quei file:

find <source_dir> -name <filename> -print

se l'ispezione mostra un elenco valido allora

find <source_dir> -name <filename> -delete

un'altra opzione se lo si desidera su molte directory usando una directory di attesa temporanea:

mkdir <dest_dir>
for i in <list_of_directories>
do
  find "$i" -name <filename> -exec /bin/mv {} <dest_dir>
done

# check dest_dir
ls dest_dir
rm -rf <dest_dir>

Come sempre, assicurati dell'accuratezza di tutti gli script prima dell'esecuzione e di avere sempre un backup pronto nel caso qualcosa vada storto.


3
metti sempre virgolette doppie intorno alle sostituzioni variabili, altrimenti il ​​tuo comando non funzionerà con nomi di file contenenti determinati caratteri speciali (spazi bianchi, caratteri jolly e barre rovesciate).
Gilles 'SO- smetti di essere malvagio'

@Gilles - Sì, grazie per aver aggiornato e assicurato che questa risposta fosse corretta.
Wayne,
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.