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これを 1 回呼び出す理由はパフォーマンスのためなので、これは問題にはなりませんが、2 回目、3 回目、… の実行でアーカイブが作成さ れ、以前の実行の出力が上書きされるような場合には使用しないでくださいxargs -0 tar cf archive.tar

関連情報