À l'aide de find . -print0
semble être le seul moyen sûr d'obtenir une liste de fichiers dans un bash en raison de la possibilité de noms de fichiers contenant des espaces, retours à la ligne, guillemets, etc.
Cependant, je vais avoir un moment difficile en fait de faire trouver de la sortie de l'utile à l'intérieur de bash ou avec d'autres utilitaires de ligne de commande. Le seul moyen que j'ai réussi à faire usage de la sortie est par la tuyauterie à perl, et l'évolution de perl FI à null:
find . -print0 | perl -e '$/="\0"; @files=<>; print $#files;'
Cet exemple imprime le nombre de fichiers trouvés, en évitant le danger de retours à la ligne dans les noms de fichiers de corrompre le comte, comme ce serait le cas avec:
find . | wc -l
Comme la plupart des programmes en ligne de commande ne prennent pas en charge null délimité par l'entrée, je me dis que la meilleure chose serait de capturer la sortie de l' find . -print0
dans un bash tableau, comme je l'ai fait dans le perl extrait ci-dessus, puis continuer avec la tâche, quelle qu'elle soit.
Comment puis-je faire cela?
Cela ne fonctionne pas:
find . -print0 | ( IFS=$'\0' ; array=( $( cat ) ) ; echo ${#array[@]} )
Beaucoup plus générale, la question pourrait être: Comment puis-je faire des choses utiles avec des listes de fichiers en bash?