Bash foreach循环
我有一个input(比方说一个文件)。 每行都有一个文件名。 我怎样才能读取这个文件并显示每个文件的内容。
这样的事情会做:
xargs cat <filenames.txt
xargs
程序读取它的标准input,并且对于每一行input以input行作为参数运行cat
程序。
如果你真的想循环做到这一点,你可以:
for fn in `cat filenames.txt`; do echo "the next file is $fn" cat $fn done
“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/
这是一个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 %"
你可能会想要处理你的文件名中的空格,虽然他们是可恶的:-)
所以我会select最初的东西,如:
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> _
cat `cat filenames.txt`
会做的伎俩