L'itération récursive de fichiers dans un répertoire peut facilement être effectuée par:
find . -type f -exec bar {} \;
Cependant, ce qui précède ne fonctionne pas pour les choses plus complexes, où beaucoup de branches conditionnelles, de boucles, etc. doivent être effectuées. J'ai utilisé cela pour ce qui précède:
while read line; do [...]; done < <(find . -type f)
Cependant, il semble que cela ne fonctionne pas pour les fichiers contenant des caractères obscurs:
$ touch $'a\nb'
$ find . -type f
./a?b
Existe-t-il une alternative qui gère bien ces personnages obscurs?
read line
à IFS= read -r line
. Le seul personnage qui le cassera alors est une nouvelle ligne.
-d $'\0'
est préférable.
find ... -exec bash -c 'echo filename is in \$0: "$0"' {} \;
est une meilleure façon de le faire.