Sto cercando di ottenere tutti i file per maschera in una directory senza cercare ricorsivamente nelle sottodirectory. Non c'è alcuna opzione -maxdepth 0 in AIX per questo.
Ho sentito parlare di -prune , ma non riesco ancora a capire come funziona.
Immagino che il comando dovrebbe assomigliare a
find dir \( ! -name dir -prune -type f \) -a -name filemask
ma non funziona.
Potresti scrivere un comando corretto per me e spiegarmi come funzionerà?
UPD
Sembra comando
find dir ! -path dir -prune
stampa tutti i file e i cataloghi in dir , ma non file e cataloghi in dir/* , così posso usarlo per il mio caso.
Risposta accettata:
Vorresti:
find dir/. ! -name . -prune -type f -name filemask
Oppure:
find dir ! -path dir -prune -type f -name filemask
Per trovare i file normali chiamati filemask in dir senza cercare nelle sottodirectory di dir .
Con find dir ! -name dir -prune , avresti problemi se fosse presente una dir/dir directory.
La dir/. l'approccio funziona intorno a questo perché find non incontrerà nessun altro file chiamato . di quella dir/. file passato come argomento.
Il -path l'approccio aggira il problema guardando il percorso del file dei file (anziché solo il nome), -path dir corrisponderà su dir , ma non su dir/dir (quindi dir sarà l'unica directory che non eliminerà). -path tuttavia potrebbe non essere disponibile nelle versioni precedenti di AIX.
Più in generale, per l'equivalente standard di -maxdepth n di GNU , vedi Limitare la ricerca di POSIX a una profondità specifica?