我有一个名为file_list
的文件,其中包含空格分隔的字符串,每个字符串都是要处理的文件的文件名。现在,我希望遍历所有文件名,并逐个处理它们。伪代码为
for every filename in file_list
process(filename);
end
我想出了一个相当笨拙的解决办法,就是
1.通过filenames='cat file_list'
将文件加载到变量中
1.用tr -cd ' ' <temp_list | wc -c
来计算空格数N
1.从1循环到N
,并通过用cut
隔开每个文件名来进行解析
有没有更简单/更优雅的方法?
4条答案
按热度按时间cwdobuhd1#
最简单的方法是一个经典的技巧,已经在伯恩壳了一段时间。
z2acfund2#
您可以将档案变更为以行分隔文字,而不是以空格分隔文字。这样,您就可以使用一般语法:
在
tr ' ' '\n' < file
中,您可以用新行替换空格,这样就可以:测试
de90aj5v3#
下面是另一个在bash中有效的方法,没有人发布:
在其他shell中运行此脚本的里程可能会有所不同。
lf5gs5x24#
xargs
在这里也可以用于一个很好的1-liner。默认情况下,它可以通过任何空格进行拆分。或将文件名放在命令中: