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 -f
dem 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 *-*-*/