在 BASH 腳本中使用正規表示式來取得最近建立的檔案名稱/類型,作為序列中較早命令的輸出

在 BASH 腳本中使用正規表示式來取得最近建立的檔案名稱/類型,作為序列中較早命令的輸出

我最近問這個關於 youtube-dlgpaste get輸出使用的問題STDIN。從那時起,這個問題已經得到解答,但我想繼續進行自動化多命令任務的下一步:

  1. 使用從 Firefox 命令中的網址列複製的 url 啟動目前資料夾中的影片下載: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檔案名稱為 &&

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. 

相關內容