GNU/Linux >> Znalost Linux >  >> Linux

Omezit Posix Find na konkrétní hloubku?

Nedávno jsem si všiml, že specifikace POSIX pro find nezahrnujte -maxdepth primární.

Pro ty, kteří to neznají, účel -maxdepth primární je omezit, kolik úrovní hluboko find sestoupí. -maxdepth 0 výsledky pouze argumenty příkazového řádku se zpracovávají; -maxdepth 1 by zpracoval pouze výsledky přímo v rámci argumentů příkazového řádku atd.

Jak mohu získat ekvivalentní chování k non-POSIX -maxdepth primární pomocí pouze možností a nástrojů specifikovaných POSIX?

(Poznámka:Samozřejmě mohu získat ekvivalent -maxdepth 0 pouhým použitím -prune jako první operand, ale to se nevztahuje do jiných hloubek.)

Přijatá odpověď:

Můžete použít -path aby odpovídala dané hloubce a prořezávala tam. Např.

find . -path '*/*/*' -prune -o -type d -print

bude maxdepth 1, jako * odpovídá . , */* odpovídá ./dir1 a */*/* odpovídá ./dir1/dir2 který je ořezán. Pokud používáte absolutní počáteční adresář, musíte přidat úvodní / na -path taky.


Linux
  1. Jak vyhledávat v konkrétních souborech odpovídajících vzoru?

  2. Jak najít všechny soubory vlastněné konkrétním uživatelem v Unixu/Linuxu?

  3. Hledání souborů, které NENÍ ve vlastnictví konkrétního uživatele

  1. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?

  2. Rekurzivně vyhledejte soubory s konkrétní příponou

  3. rekurzivní grep:vyloučení konkrétních adresářů

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

  2. Omezte přístup SSH na konkrétní klienty podle IP adresy

  3. Jak zjistit zdroj signálu POSIX