/ / Unix löscht alle Ordner in einem Verzeichnis mit einem bestimmten Namen - unix, find, rm

Unix löscht alle Ordner in einem Verzeichnis mit einem bestimmten Namen - unix, find, rm

Hallo, "Ich habe viele Ordner mit dem Namen" @eaDir "auf einer meiner Festplatten und ich möchte sie durchsuchen, finden und alle Dateien löschen.

Ich weiß, dass dies wahrscheinlich eine Kombination aus dem Befehl find und rm ist, aber ich kann sie nicht ganz herausfinden. Kann jemand helfen?

Antworten:

4 für die Antwort № 1

Versuche dies:

find . -type d -name "@eaDir" -print0 | xargs -rt0 rm -rv

Hier "dasselbe, aber explizit lange Optionen für xargs:

find . -type d -name "@eaDir" -print0 | xargs --no-run-if-empty --verbose --null rm -rv

(Die Verwendung langer Optionen ist immer eine gute Idee, wenn Sie Skripts schreiben, die von anderen Personen gepflegt werden müssen)

Vor allem aber:

man find
man xargs

1 für die Antwort № 2
find /path/to/the/disk -type d -name "@eaDir" -delete

Beachten Sie, dass die Reihenfolge hier grundlegend ist: Zitieren Sie die Manpage,

Warnungen: Vergessen Sie nicht, dass die Suchbefehlszeile als Ausdruck ausgewertet wird. Wenn Sie -delete an erster Stelle setzen, werden Sie mit find versuchen, alles unter den angegebenen Startpunkten zu löschen.

Damit, wie immer, probiere zuerst dein find Befehl mit -printWenn Sie überprüft haben, dass alles einwandfrei funktioniert, ersetzen Sie es durch -delete. Beachte das -delete impliziert -depthalso sinnvolles Testen mit -print, Sie sollten es explizit im Ausdruck angeben:

Beim Testen einer Suchbefehlszeile, die Sie später mit -delete verwenden möchten, sollten Sie explizit -depth angeben, um spätere Überraschungen zu vermeiden.


0 für die Antwort № 3

Gehen Sie in das Stammverzeichnis oder Verzeichnis und führen Sie den folgenden Befehl aus:

find . -path "*/@eaDir/*" -delete -print && find . -path "*/@eaDir" -delete -print

Dies sollte für Sie arbeiten.