GNU/Linux >> Znalost Linux >  >> Linux

Vyloučit seznam adresářů z Unixového příkazu Najít?

Potřebuji vytvořit seznam souborů přítomných v adresáři, ale také předat soubor obsahující seznam adresářů k vyloučení.

Viděl jsem níže uvedený návrh, ale neměl jsem s ním štěstí, pokud jde o příznak typu:

find $dir_name $(printf "! -name %s " $(cat $exclude_file))

Existuje způsob, jak to mohu udělat, nebo budu muset vytvořit celý seznam a pak ho odstranit odstraněním těch, které se částečně shodují s těmi v adresáři vyloučení.

Přijatá odpověď:

Vzhledem k tomu, že váš exclude_file obsahuje cesty, nikoli názvy, musíte použít -path aby odpovídala jeho záznamům. Chcete-li vyloučit odpovídající podadresáře adresářů, musíte také provést -prune jim. Mělo by to fungovat:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print

Pokud chcete pouze vidět soubory, můžete tisknout pouze soubory:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print

Linux
  1. Najděte verzi WordPress z příkazového řádku

  2. Jak mohu vyloučit adresáře z grep -R?

  3. Použijte příkaz find, ale vylučte soubory ve dvou adresářích

  1. Vyloučit seznam souborů z hledání

  2. Ekvivalent unixového příkazu find ve Windows

  3. Existuje příkaz UNIX pro seznam všech nedávno odstraněných souborů ze systému

  1. Jak vyloučit konkrétní adresáře z kopírování v Linuxu

  2. Průvodce linuxovým příkazem „Najít“.

  3. příkaz najít z PID