`xargs` 在哪里添加来自 STDIN 的选项?

`xargs` 在哪里添加来自 STDIN 的选项?

由于某些原因,选项顺序对于命令来说很重要。例如,不同的选项顺序可能会导致 中的操作不同ffmpeg,那么xargs从哪里添加选项呢stdin

例如:

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

完全等同于:

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

但如果我想通过管道input.avi从发送echoxargs 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.

相关内容