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