Câu trả lời:
Một cái gì đó như thế này sẽ làm:
xargs cat <filenames.txt
Các xargs
chương trình đọc đầu vào tiêu chuẩn của nó, và cho mỗi dòng đầu vào chạy cat
chương trình với các dòng đầu vào như là đối số (s).
Nếu bạn thực sự muốn làm điều này trong một vòng lặp, bạn có thể:
for fn in `cat filenames.txt`; do
echo "the next file is $fn"
cat $fn
done
"foreach" không phải là tên của bash. Nó chỉ đơn giản là "cho". Bạn chỉ có thể thực hiện mọi việc trong một dòng như:
for fn in `cat filenames.txt`; do cat "$fn"; done
Tham khảo: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
Đây là một while
vòng lặp:
while read filename
do
echo "Printing: $filename"
cat "$filename"
done < filenames.txt
read
xargs --arg-file inputfile cat
Điều này sẽ xuất tên tệp theo sau là nội dung của tệp:
xargs --arg-file inputfile -I % sh -c "echo %; cat %"
Bạn có thể muốn xử lý khoảng trắng trong tên tệp của mình, gớm ghiếc mặc dù chúng là :-)
Vì vậy, tôi sẽ chọn ban đầu cho một cái gì đó như:
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> _