Проблема с использованием xargs в Linux
Я пытаюсь передать вывод YouTube-DL в xargs
как я хотел бы назвать загруженный файл с названием, извлеченным из первой команды. Однако у меня возникли проблемы с этим. Команда, которую я использую, выглядит следующим образом;
youtube-dl --get-title "Youtube URI" | xargs youtube-dl -o {} "YouTube URI"
2 ответа
Чтобы ответить на ваш конкретный вопрос о xargs
необходимо указать, что вы хотите использовать {}
заполнитель:
youtube-dl --get-title "Youtube URI" |\
xargs -I{} youtube-dl -o {} "Youtube URI"
Увидеть man xargs
для получения дополнительной информации, и какие переключатели также подразумеваются -I
,
Поскольку это только один аргумент, было бы проще использовать подстановку:
youtube-dl -o "$(youtube-dl --get-title "Youtube URI")" "Youtube URI"
Обратите внимание, что эти конструкции дадут вам файл без соответствующего расширения файла.
Как уже упоминалось, самый простой способ выполнить вашу реальную задачу - использовать встроенную опцию именования заголовков:
youtube-dl -t "Youtube URI"
как описано в man youtube-dl
, Это также даст правильное расширение файла для видео файла.
Я читал справочные страницы youtube-dl: то, что вы пытаетесь сделать, гораздо проще, вам просто нужен флаг -t, -title.
youtube-dl --title "Youtube URL"
или же
youtube-dl -t "Youtube URL"