Une façon courante de faire les choses avec quelques fichiers est — et ne me frappez pas pour cela:
for f in $(ls); do …
Maintenant, pour être à l'abri des fichiers contenant des espaces ou d'autres caractères étranges, une manière naïve serait de faire:
find . -type f -print0 | while IFS= read -r -d '' file; …
Ici, le -d ''est court pour définir le NUL ASCII comme dans -d $'\0'.
Mais pourquoi en est-il ainsi? Pourquoi ''et $'\0'la même chose? Est-ce dû aux racines C de Bash avec une chaîne vide toujours terminée par un caractère nul?
for f in *plutôt que d'analyser ls.
for i in $(ls)c'est terriblement stupide - j'ai presque honte de l'avoir utilisé comme mauvais exemple ici.
find … -execau lieu de boucler autour des fichiers, ce qui fonctionne dans la plupart des cas où vous utiliseriez une telle boucle for à la place. Ici, finds'occupe de tout pour vous.