我有一个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右侧有问题感谢
答案 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