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?