GNU/Linux >> Znalost Linux >  >> Linux

Jak zajistím, aby hledání vyloučilo složku, ve které hledá?

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 {} \;

Linux
  1. Vyloučit adresář v hledání?

  2. Najít vyloučený adresář?

  3. Jak zpřístupnit sdílený adresář pomocí Sftp?

  1. jak najít vlastníka souboru nebo adresáře v pythonu

  2. Jak zjistím maximální velikost zásobníku?

  3. Jak mohu najít nejstarší soubor ve stromu adresářů

  1. Jak otevírat a zavírat adresáře v terminálu Linux

  2. Jak najít nejstarší soubor ve stromu adresářů v Linuxu

  3. Jak zrušit propojení všech symbolických odkazů v adresáři?