xargs:すべての引数を使用してコマンドを一度実行します。

xargs:すべての引数を使用してコマンドを一度実行します。

私の目標は、変更されたファイルのリストを取得し、gitrspecファイルをパラメータとして渡すコマンドを実行することです。

現在私は以下を持っています:

$ git status -s | awk '{if ($1 == "M") print $2}' | tr "\\n" "\\0" | \
    xargs -0 -I % rspec -f documentation %

これは技術的に可能ですが、変更されrspecたすべてのファイルに対して実行され、次のように実行したいと思います。

$ rspec path/to/file/1 path/to/file/2 ...

私がこれをどのように達成できるかを知っている人はいますか?

ベストアンサー1

... | xargs -0 rspec -f documentation 

rspecコマンドラインが長すぎると複数回呼び出される可能性があることに注意してください。rspec一度呼び出す理由はパフォーマンスのため、問題ではありません。ただし、xargs -0 tar cf archive.tar2回目、3回目の実行などの状況では使用しないでください。前の実行の出力を上書きするアーカイブが作成されます。

おすすめ記事