由于某些原因,选项顺序对于命令来说很重要。例如,不同的选项顺序可能会导致 中的操作不同ffmpeg
,那么xargs
从哪里添加选项呢stdin
?
例如:
$ 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.