Löschen Sie mithilfe eines Mac-Terminals Dateien in einem Verzeichnis, die einem regulären Ausdruck entsprechen

Löschen Sie mithilfe eines Mac-Terminals Dateien in einem Verzeichnis, die einem regulären Ausdruck entsprechen

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 findBefehl.

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 -print0und -0bewirken, dass find eine durch Zeichen 0 getrennte Liste ausgibt und xargs den rmBefehl in jedem Element der Liste ausführt, sodass Pfade mit Leerzeichen kein Problem darstellen.

verwandte Informationen