GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie lösche ich Verzeichnisse rekursiv mit Wildcard?

Ich arbeite über SSH an einer WD My Book World Edition. Grundsätzlich möchte ich auf einer bestimmten Verzeichnisebene beginnen und rekursiv alle Unterverzeichnisse entfernen, die mit .Apple* übereinstimmen . Wie würde ich vorgehen?

Ich habe es versucht

rm -rf .Apple* und rm -fR .Apple*

weder gelöschte Verzeichnisse mit diesem Namen innerhalb von Unterverzeichnissen.

Akzeptierte Antwort:

find ist sehr nützlich, um selektiv Aktionen für einen ganzen Baum auszuführen.

find . -type f -name ".Apple*" -delete

Hier der -type f stellt sicher, dass es sich um eine Datei und nicht um ein Verzeichnis handelt und möglicherweise nicht genau das ist, was Sie möchten, da es auch Symlinks, Sockets und andere Dinge überspringt. Sie können ! -type d ein , was wörtlich keine Verzeichnisse bedeutet, aber dann können Sie auch Zeichen löschen und Geräte blockieren. Ich würde vorschlagen, sich den -type anzusehen Prädikat auf der Manpage für find .

Um dies ausschließlich mit einem Platzhalter zu tun, benötigen Sie erweiterte Shell-Unterstützung. Bash v4 hat den globstar -Option, mit der Sie Unterverzeichnisse mit ** rekursiv abgleichen können . zsh und ksh unterstützen auch dieses Muster. Damit können Sie rm -rf **/.Apple* ausführen . Dies ist kein POSIX-Standard und nicht sehr portabel, daher würde ich es vermeiden, es in einem Skript zu verwenden, aber für eine einmalige interaktive Shell-Aktion ist es in Ordnung.


Linux
  1. So finden und löschen Sie leere Verzeichnisse und Dateien in Unix

  2. So finden und löschen Sie leere Verzeichnisse und Dateien in Linux

  3. So löschen Sie eine Nicht-Root-Nutzung mit UID 0 in Linux

  4. Wie listet man rekursiv Verzeichnisse in C unter Linux auf?

  5. So löschen Sie eine Datei mit diesem Namen unter Linux:-]???????q

So schließen Sie Dateien und Verzeichnisse mit Rsync aus

So entfernen (löschen) Sie das Verzeichnis in Linux

So vergleichen Sie Verzeichnisse mit Meld unter Linux

So kopieren Sie Dateien mit einer bestimmten Dateierweiterung rekursiv

So finden und löschen Sie leere Verzeichnisse in Linux

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile