1

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

谢谢

4

2 回答 2

3

试一试(如果您愿意,可以使用FILE而不是%):

find -maxdepth 1 -name '*.data' -print0 | xargs -0 -n1 -I % sh -c './prog % > dir/%.bck'
于 2011-01-08T01:55:34.897 回答
0

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

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

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

观看介绍视频以了解更多信息:http ://www.youtube.com/watch?v=OpaiGYxkSuQ

于 2011-01-09T21:29:30.387 回答