![在 BASH 脚本中使用正则表达式获取序列中较早命令输出的最近创建的文件名/类型](https://linux22.com/image/1467834/%E5%9C%A8%20BASH%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%8E%B7%E5%8F%96%E5%BA%8F%E5%88%97%E4%B8%AD%E8%BE%83%E6%97%A9%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA%E7%9A%84%E6%9C%80%E8%BF%91%E5%88%9B%E5%BB%BA%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%2F%E7%B1%BB%E5%9E%8B.png)
我最近问过关于使用youtube-dl 的gpaste get
输出的问题STDIN
。这个问题现在已经得到解答,但我想继续进行下一步,即自动化多命令任务:
使用从 Firefox 命令中的 URL 栏复制的 URL 开始下载当前文件夹中的视频:
youtube-dl $(gpaste get [video url])
将 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
[...进程继续...]
我的问题是:我对正则表达式还不熟悉。是否有一个正则表达式序列可以用来从命令创建的文件中获取文件名youtube-dl
并将其用作以下ffmpeg
命令的输入?
以下是一个例子:
gpaste get 0
返回https://somevideo.com/video
youtube-dl $(gpaste get 0)
下载文件到当前文件夹,Y
文件名为 &&
ffmpeg -i <filename Y>
将返回初始文件的副本,现在.wav
格式为
我怎样才能告诉 bash 在文件名 Y 存在之前获取它,以便我可以将所有这些放入脚本中?
我是否还需要根据一系列文件类型(所有视频类型)进行过滤,或者我是否需要过滤当前文件夹中的最新文件,或者两者结合?
答案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.