Проблема с использованием 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"

http://dev.man-online.org/man1/youtube-dl/

Другие вопросы по тегам