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.