GNU/Linux >> Znalost Linux >  >> Linux

příkaz find ve skriptu bash, který má za následek Žádná chyba souboru nebo adresáře pouze pro adresáře?

tl;dr – Předejte -prune pokud odstraňujete adresáře pomocí find .

Pro každého, kdo na tuto otázku narazí. Spuštění příkladu jako je tento

find /media/disk3 -type d -name .AppleDouble -exec rm -rf {} \;

výsledkem je chyba jako

rm: cannot remove 'non_existent_directory': No such file or directory

Při hledání a mazání adresářů pomocí funkce find se často setkáte s touto chybou, protože find uloží adresář do procesních podadresářů a poté jej smaže pomocí exec , pak se pokusí procházet podadresáře, které již neexistují.

Můžete buď předat -maxdepth 0 nebo -prune abyste tomuto problému zabránili. Asi takhle:

find /media/disk3 -type d -name .AppleDouble -prune -exec rm -rf {} \;

Nyní smaže adresáře bez chyb. Hurá! :)


V shell glob nemusíte escapovat DOT, protože to není regex. Použijte tedy .AppleDouble místo \.AppleDouble :

find $DIRTY_DIR -name .AppleDouble -exec rm -rf '{}' \;

PS: Nikde nevidím $COUNTER ve vašem skriptu.


Linux
  1. Chyba:xenstore-read:xs_open:Žádný takový soubor nebo adresář na DomU [Vyřešeno]

  2. Oprava závažné chyby openssl err.h – Žádný takový soubor nebo adresář [OpenCA]

  3. Odstraňte soubory a adresáře podle jejich jmen. Žádný takový soubor nebo adresář?

  1. Jak zajistit, aby příkaz alias fungoval ve skriptu bash nebo souboru bashrc

  2. Žádná taková chyba souboru nebo adresáře při spouštění binárního souboru

  3. Bash:Žádný takový soubor nebo adresář?

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Příkaz conda vyzve k chybě:Špatný interpret:Žádný takový soubor nebo adresář

  3. conda source deactivate :bash:deactivate:Žádný takový soubor nebo adresář