xargs -Iを使用して実行回数を減らす方法

xargs -Iを使用して実行回数を減らす方法

このfindコマンドには、特定のxargsアクションスタイルを実行する2つの方法があります。

find foo -exec bar '{}' baz ';'
find foo -exec bar '{}' baz '+'

違いは、1つ目は見つかった各ファイルを1回実行し、2つ目はファイルをグループ化して実行回数を減らすことです。

私が見ると、xargs次のスイッチがあります-I

xargs -I{} foo bar {} baz

これは各パラメータに対して一度だけ実行されます。

質問: で実行xargs回数を減らす方法はありますかfind

私はこのようなことをしたい:

xargs -I{} echo start {} end << EOF
hello
world
EOF

結果を得る:

start hello world end

いいえ:

start hello end
start world end

ベストアンサー1

これを行う唯一の方法は、コマンド用の単純なラッパースクリプトを作成することです。

#!/bin/sh
echo start "$@" end

それからあなたは利用可能ですxargs echo-wrapper

もちろん、これをインラインで実行することもできます。

xargs sh -c 'echo start "$@" end' sh <<EOF
hello 
world
EOF

sh最後に追加情報を参照してください。これはsh -c、シェルが内部的に指定する構文の一部です。$0

おすすめ記事