Der einfachste Weg wäre, einfach -mindepth 1
hinzuzufügen , wodurch die erste Tiefenhierarchie übersprungen und somit Ihr übergeordnetes Verzeichnis weggelassen wird.
Außerdem benötigen Sie keine zusätzliche -exec
Anruf bei rm
, können Sie einfach delete
die Ordner direkt, wenn sie leer sind.
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
Wenn sie nicht leer sind:
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
Wenn Sie faul sind, können Sie auch einen Platzhalter erweitern lassen. Seit *
enthält standardmäßig nicht das aktuelle Verzeichnis (es sei denn, dotglob
gesetzt ist), könnten Sie auch Folgendes tun:
find /var/www/html/content/processing/* -type d -mtime +1 -delete
Dies würde jedoch auch keine versteckten Ordner enthalten, wiederum aufgrund des dotglob
Option.
Das Problem ist, dass find das aktuelle Verzeichnis (.) zusammen mit den anderen Verzeichnissen zurückgibt, also sowohl den Verarbeitungsordner als auch die Unterverzeichnisse löscht. Eine schnelle Möglichkeit, dies zu umgehen, wäre, die Option
anzuhängen-not -name .
was verhindert, dass find das aktuelle Verzeichnis ausgibt und es wiederum nicht löscht.
Das würde funktionieren, wenn Sie den Befehl innerhalb des Verarbeitungsverzeichnisses ausführen würden, um der Tatsache Rechnung zu tragen, dass Sie einen absoluten Pfad verwenden:
-not -name /var/www/html/content/processing
Und der ganze Befehl wäre:
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;