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.