1

私は自分がやりたいことをするbashの「forループ」を持っています

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

IMHOこれは、提供されているxargsソリューションよりも読みやすいです。

詳細については、紹介ビデオをご覧ください: http://www.youtube.com/watch?v=OpaiGYxkSuQ

于 2011-01-09T21:29:30.387 に答える