Qualcosa di simile al seguente è quello che sto cercando, ma il mio codice non funziona, indipendentemente da come fuggo {}
e+
;
find ./ -maxdepth 1 -type d -name '.*' -exec \
find {} -maxdepth 1 -type f -name '*.ini' -exec \
md5sum \{\} \\; \;
Dopo aver visto questo Unix - & - domanda Linux , ho trovato che le seguenti opere di codice, ma non è nidificazione ritrovamento in quanto tale, e ho il sospetto che ci sia un modo migliore per fare questo lavoro particolare.
find ./ -maxdepth 1 -type d -name '.*' \
-exec bash -c 'for x; do
find "$x" -maxdepth 1 -type f -name "*.ini" \
-exec md5sum \{\} \;; \
done' _ {} \+
Esiste un modo per nidificare find -exec
senza la necessità di invocare una shell (come sopra), con tutte le sue strane citazioni e vincoli di escape?
O può essere fatto direttamente in un singolo comando find, usando una combinazione dei suoi numerosi parametri?
find
, ma se find
non puoi farlo, allora perché è find
così riverito (?) Come lo strumento- da usare per trovare i file? ... Ho scoperto che find ./ -maxdepth 2 -path '.*/*.ini' -type f -exec md5sum {} \+
funziona senza problemi nella mia situazione (il riferimento di jw013 -prune
mi ha portato a questo nella pagina man), ma mi chiedo se sia un metodo robusto (in genere). Non l'ho mai usato find
(in meno di un anno di Linux) come locate
ha fatto quasi tutto ciò di cui ho bisogno, quindi è un territorio sconosciuto.
-path
test è esattamente quello che stavo per suggerire. Con questo, dovresti essere in grado di fare tutto ciò che vuoi (scusami per l'associazione Ace Of Base;))