Где «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 из echo в xargs ffmpeg -i -r 24 output.avi by pipe, как мне установить строку из STDIN в указанную позицию?

One Solution collect form web for “Где «xargs» добавляет опцию из STDIN?”

Я не совсем уверен, что следую за вами, но если вы спрашиваете, как вы можете контролировать, где xargs помещает аргументы при его передаче, вы можете использовать switch -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. 
  • Обработка временных меток вывода tcpdump в режиме реального времени
  • Передача списка из двух PID для xargs только убивает первый, используя ssh
  • Поиск строки в каталоге. Получить вывод без имени файла.
  • подстановка процесса для открытия списка файлов с приложением
  • Применение функции bash для каждого файла в подпапке рекурсивно
  • / usr / bin / awk: слишком длинный список аргументов
  • вывод искажается при параллельном запуске «xargs ls»
  • Комбинация ls, xargs и zcat приводит к дублированию суффиксов имени файла?
  • Используйте команду find для выполнения ряда команд
  • слишком длинная строка
  • Перемещение файлов с помощью find + xargs: target не является каталогом?
  • Linux и Unix - лучшая ОС в мире.