Jawaban:
Sesuatu seperti ini akan dilakukan:
xargs cat <filenames.txt
The xargs
program membaca input standar, dan untuk setiap baris masukan menjalankan cat
program dengan jalur input sebagai argumen (s).
Jika Anda benar-benar ingin melakukan ini dalam satu lingkaran, Anda dapat:
for fn in `cat filenames.txt`; do
echo "the next file is $fn"
cat $fn
done
"foreach" bukan nama untuk bash. Ini hanya "untuk". Anda dapat melakukan hal-hal dalam satu baris saja seperti:
for fn in `cat filenames.txt`; do cat "$fn"; done
Referensi: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
Ini sebuah while
loop:
while read filename
do
echo "Printing: $filename"
cat "$filename"
done < filenames.txt
read
xargs --arg-file inputfile cat
Ini akan menampilkan nama file diikuti dengan isi file:
xargs --arg-file inputfile -I % sh -c "echo %; cat %"
Anda mungkin ingin menangani spasi dalam nama file Anda, meskipun mereka :-)
Jadi saya akan memilih awalnya untuk sesuatu seperti:
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> _