我有一个输入(比方说一个文件)。 每一行上都有一个文件名。 如何读取这个文件并显示每个文件的内容。
像这样的东西会做:
xargs cat <filenames.txt
xargs程序读取其标准输入,对于每一行输入,以输入行作为参数运行 cat程序。
xargs
cat
如果你真的想循环执行,你可以:
for fn in `cat filenames.txt`; do echo "the next file is $fn" cat $fn done
您可能希望在文件名中处理空格,尽管它们令人厌恶: -)
所以我一开始会选择这样的东西:
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> _
这是一个 while循环:
while
while read filename do echo "Printing: $filename" cat "$filename" done < filenames.txt
xargs --arg-file inputfile cat
这将输出文件名后跟文件内容:
xargs --arg-file inputfile -I % sh -c "echo %; cat %"
“ foreach”不是 bash 的名字。它只是“为了”。你可以只用一句话做事,比如:
for fn in `cat filenames.txt`; do cat "$fn"; done
参考资料: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
cat `cat filenames.txt`
会有用的
如果它们都有相同的扩展名(例如.jpg) ,您可以使用以下命令:
for picture in *.jpg ; do echo "the next file is $picture" done
(如果文件名有空格,此解决方案也可以工作)