Wie lösche ich alle Dateien mit einem bestimmten Namen in allen Unterverzeichnissen?


25

Ich möchte alle Dateien mit einem bestimmten Namen in allen Unterverzeichnissen meines Home-Verzeichnisses löschen.

Ich habe es versucht:

rm -r file

in meinem Heimatverzeichnis, aber es hat nicht funktioniert, weil diese Datei in diesem Verzeichnis nicht existiert.

Antworten:



12

Um die Antwort von @ tante zu erläutern, möchten Sie möglicherweise sicherstellen, dass die verwendete Dateiliste korrekt ist, bevor Sie diese Dateien löschen:

find <source_dir> -name <filename> -print

Wenn die Inspektion eine gültige Liste ergibt, dann

find <source_dir> -name <filename> -delete

eine andere Option, wenn dies über viele Verzeichnisse unter Verwendung eines temporären Halteverzeichnisses erfolgen soll:

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>

Stellen Sie wie immer sicher, dass alle Skripte korrekt sind, bevor Sie sie ausführen, und halten Sie immer ein Backup bereit, falls etwas schief geht.


3
Setzen Sie Variablenersetzungen immer in doppelte Anführungszeichen, sonst funktioniert Ihr Befehl nicht mit Dateinamen, die bestimmte Sonderzeichen enthalten (Leerzeichen, Platzhalter und umgekehrte Schrägstriche).
Gilles 'SO- hör auf, böse zu sein'

@Gilles - Ja, danke für die Aktualisierung und die Richtigkeit dieser Antwort.
Wayne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.