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.