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 -execsenza 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 findnon puoi farlo, allora perché è findcosì 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 -prunemi 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 locateha fatto quasi tutto ciò di cui ho bisogno, quindi è un territorio sconosciuto.
-pathtest è 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;))