Il modo più semplice sarebbe semplicemente aggiungere -mindepth 1
, che salterà la prima gerarchia di profondità e quindi tralascerà la tua directory padre.
Inoltre, non hai bisogno di un ulteriore -exec
chiama rm
, puoi solo delete
direttamente le cartelle se sono vuote.
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
Se non sono vuoti:
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
Se sei pigro puoi anche espandere un carattere jolly. Da *
non include la directory corrente per impostazione predefinita (a meno che dotglob
è impostato), puoi anche fare:
find /var/www/html/content/processing/* -type d -mtime +1 -delete
Tuttavia, questo non includerebbe nemmeno le cartelle nascoste, sempre a causa del dotglob
opzione.
Il problema è che find restituisce la directory corrente (.) insieme alle altre directory, quindi elimina la cartella di elaborazione e le sottodirectory. Un modo rapido per aggirare il problema sarebbe aggiungere l'opzione
-not -name .
che interrompe find dall'output della directory corrente e, a sua volta, impedisce che venga cancellato.
Funzionerebbe se eseguissi il comando all'interno della directory di elaborazione, quindi per tenere conto del fatto che stai utilizzando un percorso assoluto:
-not -name /var/www/html/content/processing
E l'intero comando sarebbe:
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;