Ich habe temporäre Verzeichnisse voller Junk, die alle mit __temp__
beginnen (z. B. __temp__user_uploads
), die ich mit einer Aufräumfunktion löschen möchte. Mein Funktionsversuch ist zu laufen:
Wenn ich den Befehl ausführe und es mehrere __temp__
Verzeichnisse ( __temp__foo
und __temp__bar
) gibt, bekomme ich die Ausgabe:
Wenn ich den Befehl ausführe und es nur 1 __temp__
Verzeichnis ( __temp__foo
) gibt, wird es gelöscht und ich bekomme die Ausgabe:
Warum funktioniert der Befehl nicht, warum ist er so inkonsistent und wie kann ich ihn beheben?
Verwenden Sie eine Tiefensuche und geben Sie das Shell-Metazeichen *
:
Erläuterung
Ohne den -depth
-Flag löscht Ihr find
-Befehl übereinstimmende Dateinamen und versucht dann, in die (jetzt nicht verlinkten) Verzeichnisse abzusteigen. Das ist der Ursprung von "Keine solche Datei oder Verzeichnis" in Ihrem einzelnen Verzeichnis __temp__
.
Ohne das *
zu zitieren oder zu entfernen, erweitert die Shell dieses Muster und vergleicht mehrere __temp__whatever
-Dateinamen im aktuellen Arbeitsverzeichnis. Diese Erweiterung wird find
verwirren, da zu diesem Zeitpunkt Optionen und keine Dateinamen in der Argumentliste erwartet werden.