Nejjednodušší způsob by bylo přidat -mindepth 1
, který přeskočí první hloubkovou hierarchii a tím vynechá váš nadřazený adresář.
Navíc nepotřebujete další -exec
volání na rm
, stačí delete
složky přímo, pokud jsou prázdné.
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -delete
Pokud nejsou prázdné:
find /var/www/html/content/processing -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;
Pokud jste líní, můžete si také nechat rozšířit zástupný znak. Od *
ve výchozím nastavení nezahrnuje aktuální adresář (s výjimkou dotglob
je nastaveno), můžete také provést:
find /var/www/html/content/processing/* -type d -mtime +1 -delete
To však také nezahrnuje skryté složky, opět kvůli dotglob
možnost.
Problém je v tom, že find vrátí aktuální adresář (.) spolu s ostatními adresáři, takže odstraní složku pro zpracování i podadresáře. Rychlý způsob, jak to obejít, by bylo přidat možnost
-not -name .
což zastaví funkci find ve výstupu aktuálního adresáře a naopak zabrání jeho odstranění.
To by fungovalo, pokud byste příkaz spouštěli v adresáři pro zpracování, aby bylo možné počítat s tím, že používáte absolutní cestu:
-not -name /var/www/html/content/processing
A celý příkaz by byl:
find /var/www/html/content/processing -type d -mtime +1 -not -name /var/www/html/content/processing -exec rm -rf {} \;