`xargs` は STDIN からオプションをどこに追加しますか?

`xargs` は STDIN からオプションをどこに追加しますか?

いくつかの理由により、オプションの順序はコマンドにとって重要です。たとえば、オプションの順序が異なると、 での動作が異なる場合があります。では、のオプションをffmpegどこから追加するのでしょうか。xargsstdin

例えば:

$ echo 'output.avi' | xargs ffmpeg -i input.avi -r 24

は以下と完全に同等です:

$ ffmpeg -i inpit.avi -r 24 output.avi

input.aviしかし、パイプ経由でから にecho送信したい場合xargs ffmpeg -i -r 24 output.avi、STDIN からの文字列を指定された位置に設定するにはどうすればよいですか?

答え1

よく理解できていませんが、xargs引数を渡したときにその引数を配置する場所を制御する方法を尋ねている場合は、スイッチを使用して、-I{}貼り付け先の入力に使用するマクロを指定しxargs、渡される内容を展開したい場所でこのマクロを使用することができますxargs

注記:私はマクロの表記法を使用して{}、引数を展開したい場所にそのマクロを配置するだけです。

$ echo hi | xargs -I{} echo {}
hi

$ echo hi | xargs -I{} echo {} {}
hi hi

$ echo hi | xargs -I{} echo {} {} bye
hi hi bye
xargs マニュアルページからの抜粋
   -I replace-str
      Replace  occurrences of replace-str in the initial-arguments with 
      names read from standard input.  Also, unquoted blanks do not 
      terminate input items; instead the separator is the newline 
      character.  Implies -x and -L 1.

関連情報