xargs到不同的文件

时间:2011-01-08 01:51:44

标签: shell command-line xargs

我有一个bash'for loop',可以做我想要的事情

for i in *.data
do
    ./prog $i >dir/$i.bck
done

我可以把它变成一个xargs构造吗? 我尝试过像

这样的东西
ls *.data|xargs -n1  -I FILE ./prog FILE >dir/FILE.bck

但我对'>'

的FILE右侧有问题

感谢

2 个答案:

答案 0 :(得分:3)

尝试一下(如果您愿意,可以使用FILE代替%):

find -maxdepth 1 -name '*.data' -print0 | xargs -0 -n1 -I % sh -c './prog % > dir/%.bck'

答案 1 :(得分:0)

GNU Parallel http://www.gnu.org/software/parallel/专为此类任务而设计:

ls *.data | parallel ./prog {} '>'dir/{}.bck

恕我直言,这比提供的xargs解决方案更具可读性。

观看介绍视频以了解详情:http://www.youtube.com/watch?v=OpaiGYxkSuQ