Löschen Sie eine Reihe von Ordnern, die an verschiedenen Stellen mehr als ein '-' als Teil ihres Namens enthalten

Löschen Sie eine Reihe von Ordnern, die an verschiedenen Stellen mehr als ein '-' als Teil ihres Namens enthalten

Wie kann ich viele Ordner löschen, -deren Name mehr als eine Zahl enthält?

Zum Beispiel:

e97bf913-5759-4fff-bdaf-2f931b53a432/
39f953c5-dab0-420e-a650-a50a30f48097/

Antwort1

Das Muster

*-*-*/

stimmt mit Verzeichnissen mit zwei oder mehr Bindestrichen überein. *Stimmt mit jeder beliebigen Zeichenfolge überein (null oder mehr Zeichen).

Wenn Sie nur Verzeichnisnamen abgleichen möchten, die nicht mit einem Bindestrich beginnen und enden dürfen (wie in Ihrem Beispiel), können Sie

[!-]*-*-*[!-]/

stattdessen. Das [!-]entspricht jedem Zeichen, das kein !Bindestrich () ist.

Laufen

ls -d [!-]*-*-*[!-]/

zuerst, um zu sehen, ob dies die sind, die Sie löschen möchten. Führen Sie dann

rm -r [!-]*-*-*[!-]/

um sie rekursiv zu löschen. Wenn Sie das Löschen wirklich erzwingen müssen, fügen Sie -fdem Befehl hinzu.

Antwort2

rm -r *-*-*-*-*

ACHTUNG: Dadurch werden alle Dateien gelöscht, die diesem Schema entsprechen. Also Dateien wie:

system-file-separated-by-minus 

werden ebenfalls gelöscht.

Der '*'-Teil steht für alles (null, ein oder mehrere Zeichen) bis zum nächsten, in diesem Fall durch Minus getrennt. Wenn Sie wissen, dass Ihre Dateien 8 Zeichen vor dem - und 4 vor dem nächsten haben, können Sie sagen:

rm -r ????????-????-????-????-????????????

Jedes ? steht für ein beliebiges Zeichen. Dadurch werden alle Dateien gelöscht, die Ihrem Schema entsprechen. Es werden aber auch Dateien gelöscht, die dasselbe Schema haben und die Sie möglicherweise nicht möchten. Überprüfen Sie dies also zuerst.

Antwort3

Führen Sie diesen Befehl einfach im übergeordneten Verzeichnis aus

rm -r *-*-*/

verwandte Informationen