
Wie lösche ich mit einem Mac-Terminal Dateien in einem Verzeichnis, die einem bestimmten regulären Ausdruck oder einer ähnlichen Lösung entsprechen?
Antwort1
Verwenden Sie den find
Befehl.
Alle Dateien (rekursiv) finden, die einem regulären Ausdruck entsprechen: find . -type f -regex '/ex/'
Alle Dateien (rekursiv) finden, die einem regulären Ausdruck entsprechen, und diese löschen:find . -type f -regex '/ex/' -exec rm {} \;
Die Klammern speichern den gefundenen Pfadnamen und der Backslash schützt das Semikolon, da es an find übergeben wird. Ohne Schutz würde es von der Shell verbraucht. Wenn Sie das nicht verstanden haben, lesen Sie die ersten beiden Kapitel von „Die Bash-Shell lernen“.
Weitere Optionen finden Sie in den Manpages find
. Es gibt noch viele weitere Suchmöglichkeiten.
Antwort2
Sehr ähnlich zu jorellis Antwort. Das ist, was ich verwende:
find . -regex '/ex/' -print0 | xargs -0 rm
Die Argumente -print0
und -0
bewirken, dass find eine durch Zeichen 0 getrennte Liste ausgibt und xargs den rm
Befehl in jedem Element der Liste ausführt, sodass Pfade mit Leerzeichen kein Problem darstellen.