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
Co Libgl_always_indirect=1 ve skutečnosti dělá?
Proč není LPD ve výchozím nastavení při přenosu povoleno?