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.