GNU/Linux >> Znalost Linux >  >> Linux

Jak rekurzivně odstranit adresáře pomocí zástupných znaků?

Pracuji prostřednictvím SSH na WD My Book World Edition. V podstatě bych chtěl začít na úrovni konkrétního adresáře a rekurzivně odstranit všechny podadresáře odpovídající .Apple* . Jak bych na to postupoval?

Zkusil jsem

rm -rf .Apple* a rm -fR .Apple*

ani smazané adresáře odpovídající tomuto názvu v rámci podadresářů.

Přijatá odpověď:

find je velmi užitečný pro selektivní provádění akcí na celém stromu.

find . -type f -name ".Apple*" -delete

Zde -type f zajišťuje, že je to soubor, nikoli adresář, a nemusí to být přesně to, co chcete, protože také přeskočí symbolické odkazy, zásuvky a další věci. Můžete použít ! -type d , což doslova znamená ne adresáře, ale pak můžete také odstranit znak a blokovat zařízení. Doporučuji podívat se na -type predikát na manuálové stránce pro find .

Chcete-li to provést výhradně se zástupným znakem, potřebujete pokročilou podporu prostředí. Bash v4 má globstar možnost, která vám umožní rekurzivně porovnat podadresáře pomocí ** . zsh a ksh tento vzor také podporují. Pomocí toho můžete provést rm -rf **/.Apple* . Toto není standard POSIX a není příliš přenosné, takže bych se vyhnul použití ve skriptu, ale pro jednorázovou interaktivní akci shellu je to v pořádku.


Linux
  1. Jak najít a odstranit prázdné adresáře a soubory v Unixu

  2. Jak najít a odstranit prázdné adresáře a soubory v Linuxu

  3. Jak odstranit použití bez oprávnění root s UID 0 v Linuxu

  1. Jak rekurzivně vypsat adresáře v C na Linuxu?

  2. jak mohu rekurzivně odstranit prázdné adresáře v mém domovském adresáři?

  3. Jak mohu rekurzivně odstranit všechny prázdné soubory a adresáře v Linuxu?

  1. Jak odstranit uživatelské účty pomocí domovského adresáře v systému Linux

  2. Jak vyhledávat a odstraňovat adresáře rekurzivně v systému Linux

  3. Jak dostat Ls do seznamu adresářů s koncovým lomítkem?