
我正在嘗試將大量視訊存檔(位於子資料夾中)複製到並行資料夾結構,同時將視訊從 mov 轉換為 mp4(加上一些其他調整)。這是命令:
for f in Users/me/VIDEOARCHIVE/*/*.mov; do ffmpeg -i "$f" "Users/me/CONVERTED/${f%.mov}.mp4"; done
但是,我得到輸出檔案“沒有這樣的檔案或目錄”。我知道這個網站上有很多類似的問題,但它們對我的情況都沒有幫助。
我還嘗試事先創建一個空資料夾結構,這樣只需創建 .mp4 文件,但我仍然遇到相同的錯誤。
當(空)資料夾結構已預先建立時,它確實可以工作。但只要有一個資料夾遺失,我就會得到「沒有這樣的檔案或目錄」。
有沒有辦法告訴它在需要時創建父資料夾,以便可以將文件放入其中?
答案1
有沒有辦法告訴它在需要時創建父資料夾,以便可以將文件放入其中?
ffmpeg?不會。事實上,很少有程序這樣做。
一些建議:
- 您應該事先建立該資料夾。
- 您需要使用檔案的基本名稱,因為它
$f
已經包含完整的檔案路徑。 - 您應該對視訊存檔 (
**/*
) 使用遞歸通配符來遍歷所有目錄。
把它們放在一起:
# enable recursive globbing
shopt -s globstar
# create the directory if necessary
dir="/Users/me/CONVERTED/"
mkdir -p "$dir"
# iterate over all files
for f in /Users/me/VIDEOARCHIVE/**/*.mov; do
# get the file's basename
fname="$(basename "$f")"
# run the command, replacing the file extension
ffmpeg -i "$f" "$dir/${fname%.mov}.mp4"
done