Yanıtlar:
Böyle bir şey yapardı:
xargs cat <filenames.txt
xargsProgram standart giriş okur ve girişin her hat için çalışan catdeğişken (ler) olarak giriş hatları ile programı.
Bunu gerçekten bir döngüde yapmak istiyorsanız, şunları yapabilirsiniz:
for fn in `cat filenames.txt`; do
echo "the next file is $fn"
cat $fn
done
"foreach" bash için bir isim değildir. Sadece "için" dir. Bir satırda işleri sadece şu şekilde yapabilirsiniz:
for fn in `cat filenames.txt`; do cat "$fn"; done
Referans: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
xargs --arg-file inputfile cat
Böylece dosya adı ve ardından dosyanın içeriği verilir:
xargs --arg-file inputfile -I % sh -c "echo %; cat %"
Muhtemelen dosya adlarınızdaki boşluklarla başa çıkmak isteyeceksiniz, ancak bunlardan nefret ediyor :-)
Bu yüzden başlangıçta şöyle bir şey tercih ediyorum:
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> _