Le plus simple serait d'ajouter simplement -mindepth 1
, qui ignorera la première hiérarchie de profondeur et laissera donc de côté votre répertoire parent.
De plus, vous n'avez pas besoin d'un -exec
supplémentaire appeler le rm
, vous pouvez simplement delete
les dossiers directement s'ils sont vides.
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
S'ils ne sont pas vides :
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
Si vous êtes paresseux, vous pouvez également développer un caractère générique. Depuis *
n'inclut pas le répertoire courant par défaut (sauf si dotglob
est défini), vous pouvez également faire :
find /var/www/html/content/processing/* -type d -mtime +1 -delete
Cependant, cela n'inclurait pas non plus les dossiers cachés, encore une fois en raison du dotglob
option.
Le problème est que find renvoie le répertoire courant (.) avec les autres répertoires, il supprime donc le dossier de traitement ainsi que les sous-répertoires. Un moyen rapide de contourner ce problème serait d'ajouter l'option
-not -name .
qui empêche find de sortir le répertoire courant, et à son tour l'empêche d'être supprimé.
Cela fonctionnerait si vous exécutiez la commande dans le répertoire de traitement, afin de tenir compte du fait que vous utilisez un chemin absolu :
-not -name /var/www/html/content/processing
Et la commande entière serait :
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;