J'ai une entrée (disons un fichier). Sur chaque ligne, il y a un nom de fichier. Comment puis-je lire ce fichier et afficher le contenu de chacun d'eux.
Réponses
Trop de publicités?Quelque chose comme ceci:
xargs cat <filenames.txt
L' xargs
programme lit son entrée standard, et pour chaque ligne d'entrée exécute l' cat
programme avec les lignes d'entrée comme argument(s).
Si vous voulez vraiment faire cela dans une boucle, vous pouvez:
for fn in `cat filenames.txt`; do
echo "the next file is $fn"
cat $fn
done
"foreach" n'est pas le nom pour bash. Il est tout simplement "pour". Vous pouvez faire des choses en une seule ligne comme:
for fn in
Référence: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
Vous aurez probablement envie de gérer les espaces dans les noms de fichier, odieuse bien qu'ils soient :-)
Je voudrais donc opter d'abord pour quelque chose comme:
pax> cat qq.in
normalfile.txt
file with spaces.doc
pax> sed 's/ /\\ /g' qq.in | xargs -n 1 cat
<<contents of 'normalfile.txt'>>
<<contents of 'file with spaces.doc'>>
pax> _