Di recente ho notato che le specifiche POSIX per find non includere il -maxdepth primario.
Per chi non lo conoscesse, lo scopo del -maxdepth primario è limitare il numero di livelli in profondità find scenderà. -maxdepth 0 risulta in solo argomenti della riga di comando in elaborazione; -maxdepth 1 gestirebbe solo i risultati direttamente all'interno degli argomenti della riga di comando, ecc.
Come posso ottenere il comportamento equivalente al -maxdepth non POSIX principale utilizzando solo le opzioni e gli strumenti specificati da POSIX?
(Nota:ovviamente posso ottenere l'equivalente di -maxdepth 0 semplicemente usando -prune come primo operando, ma non si estende ad altre profondità.)
Risposta accettata:
Puoi usare -path per abbinare una data profondità e potare lì. Es.
find . -path '*/*/*' -prune -o -type d -print
sarebbe maxdepth 1, come * corrisponde al . , */* corrisponde a ./dir1 e */*/* corrisponde a ./dir1/dir2 che viene potato. Se utilizzi una directory di partenza assoluta, devi aggiungere un / iniziale al -path anche.