Использование регулярного выражения в скрипте BASH для получения имени файла / типа, недавно созданного в качестве вывода командой ранее в последовательности

1

Я недавно спросил Этот вопрос об использовании gpaste get вывод как STDIN для YouTube-дл , С тех пор на этот вопрос был дан ответ, но я бы хотел перейти к следующему этапу автоматизации - многокомандной задаче

  1. начать загрузку видео в текущей папке, используя URL, скопированный с панели URL в Firefox команда: youtube-dl $(gpaste get [video url])

  2. преобразовать файл mkv или mp4 или m4a в формат .wav
    команда: ffmpeg -i [filename of video from step one].<filetype of video from step one> [filename of video from step one].wav

  3. [... процесс продолжается ...]

Мой вопрос: я все еще новичок в регулярных выражениях. Существует ли последовательность регулярных выражений, которую я могу использовать, чтобы получить имя файла из файла, созданного youtube-dl команда и использовать его в качестве входа для следующего ffmpeg команда?

Вот пример:

gpaste get 0

возвращается https://somevideo.com/video

youtube-dl $(gpaste get 0)

Загружает файл в текущую папку с Y имя файла & amp; & amp;

ffmpeg -i <filename Y>

Вернет дубликат исходного файла, теперь в .wav формат

Как я могу заставить bash получить это имя Y до того, как оно существует, чтобы я мог поместить все это в скрипт?

Должен ли я также фильтровать по диапазону типов файлов (все типы видео) или мне нужно будет фильтровать самый последний файл в текущей папке или их комбинацию?

Andrew
источник

Ответы:

1

Только что проверил документацию youtube-dl, он принимает этот параметр:

--get-filename                   Simulate, quiet but print output filename

Итак, может быть, вы можете попробовать что-то вроде этого:

videourl=$(gpaste get [video url])
videofilename=$(youtube-dl --get-filename $videourl)
youtube-dl $videourl
#further processing. 
David Dai
источник
Я помню, как видел этот параметр на страницах руководства, но я понятия не имел, как его использовать. Ваше решение имеет смысл, просто установите его как переменную, затем вызовите его в следующей команде последовательности, я прав?
Andrew
@ И точно.
David Dai