cat `cat filenames.txt`
will do the trick
Here is a while
loop:
while read filename
do
echo "Printing: $filename"
cat "$filename"
done < filenames.txt
xargs --arg-file inputfile cat
This will output the filename followed by the file's contents:
xargs --arg-file inputfile -I % sh -c "echo %; cat %"
If they all have the same extension (for example .jpg), you can use this:
for picture in *.jpg ; do
echo "the next file is $picture"
done
(This solution also works if the filename has spaces)
You'll probably want to handle spaces in your file names, abhorrent though they are :-)
So I would opt initially for something like:
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> _
"foreach" is not the name for bash. It is simply "for". You can do things in one line only like:
for fn in `cat filenames.txt`; do cat "$fn"; done
Reference: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
Source: Stackoverflow.com