L'iterazione ricorsiva dei file in una directory può essere facilmente eseguita da:
find . -type f -exec bar {} \;
Tuttavia, quanto sopra non funziona per cose più complesse, dove è necessario eseguire molti rami condizionali, loop ecc. Lo usavo per quanto sopra:
while read line; do [...]; done < <(find . -type f)
Tuttavia, sembra che questo non funzioni con file contenenti caratteri oscuri:
$ touch $'a\nb'
$ find . -type f
./a?b
Esiste un'alternativa che gestisce bene personaggi così oscuri?
read line
in IFS= read -r line
. L'unico personaggio che lo romperà allora è una nuova riga.
-d $'\0'
è preferibile.
find ... -exec bash -c 'echo filename is in \$0: "$0"' {} \;
è un modo migliore per farlo.