GNU/Linux >> Znalost Linux >  >> Linux

Jak omezit hloubku pro rekurzivní seznam souborů?

Podívejte se na -maxdepth vlajka find

find . -maxdepth 1 -type d -exec ls -ld "{}" \;

Zde jsem použil 1 jako maximální hloubku úrovně, -type d znamená najít pouze adresáře, které pak ls -ld uvádí obsah v dlouhém formátu.


Využijte find možnosti

Ve skutečnosti neexistuje žádný exec z /bin/ls potřeba;

Najít má možnost, která to dělá:

find . -maxdepth 2 -type d -ls

Chcete-li zobrazit pouze jednu úroveň podadresářů, která vás zajímá, přidejte -mindepth na stejnou úroveň jako -maxdepth :

find . -mindepth 2 -maxdepth 2 -type d -ls

Použít výstupní formátování

Pokud by se zobrazené podrobnosti měly lišit, -printf může zobrazit jakékoli podrobnosti o souboru ve vlastním formátu; Chcete-li zobrazit symbolická oprávnění a jméno vlastníka souboru, použijte -printf s %M a %u v format .

Později jsem si všiml, že chcete úplné informace o vlastnictví, které zahrnují skupinu. Použijte %g ve formátu pro symbolický název nebo %G pro ID skupiny (jako také %U pro číselné ID uživatele)

find . -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'

To by vám mělo poskytnout přesně ty podrobnosti, které potřebujete pro ty správné soubory.

Uvedu příklad, který ukazuje ve skutečnosti různé hodnoty pro uživatele a skupinu:

$ sudo find /tmp -mindepth 2 -maxdepth 2 -type d -printf '%M %u %g %p\n'
drwx------ www-data  www-data /tmp/user/33
drwx------ octopussy root     /tmp/user/126
drwx------ root      root     /tmp/user/0
drwx------ siegel    root     /tmp/user/1000
drwxrwxrwt root      root     /tmp/systemd-[...].service-HRUQmm/tmp

(Upraveno pro čitelnost:odsazeno, zkrácený poslední řádek)


Poznámky k výkonu

Přestože doba provádění je pro tento druh příkazu většinou irelevantní, nárůst výkonu je zde dostatečně velký, aby stálo za to na něj upozornit:

Nejen, že ušetříme vytváření nového procesu pro každé jméno - obrovský task -informace se ani nemusí číst, jako find už to ví.


tree -L 2 -u -g -p -d

Vytiskne strom adresářů v pěkném formátu až do hloubky 2 (-L 2). Vytiskne uživatele (-u) a skupinu (-g) a oprávnění (-p). Vytiskne pouze adresáře (-d). Strom má spoustu další užitečné možnosti.


Linux
  1. Omezit Posix Find na konkrétní hloubku?

  2. Jak najít nesrovnatelné závorky v textovém souboru?

  3. Jak vypsat rekurzivní velikosti souborů a adresářů v adresáři?

  1. Jak omezit velikost souboru při odevzdání?

  2. Jak vypsat seznam složek pomocí příkazů bash?

  3. Jak najít výchozího správce souborů?

  1. Jak v Linuxu zobrazím seznam souborů s úplnými cestami?

  2. Jak vytvoříte seznam/soubor pro instalaci pacmana?

  3. Jak najít soubor ve FreeBSD