[英]Recursively convert files in nested folders
我只想評論一個與此非常相似的問題的答案,但我沒有足夠的代表。 我正在尋找一種方法來改變這行代碼:
for i in *.mkv; do ffmpeg -i "$i" "${i%.*}.mp4"; done
因此它包含.avi文件,以便它可以搜索嵌套文件夾。 我希望能夠定位/Videos
並讓腳本自動遍歷文件夾樹到/Videos/2016/January
,轉換該文件夾中包含的所有視頻文件,然后為/Videos/2016/February
和等等。
提前致謝。
(以上代碼行的信用額去了LordNeckBeard,來自這篇文章。)
使用LordNeckBeard的參考find
,我想出了以下解決方案:
find ./ -iname '*.avi' -o -iname '*.mkv' -exec bash -c 'ffmpeg -i "{}" -c:v libx265 -preset medium -crf 28 -c:a aac "{}".mp4' \;
測試和工作完全符合我的預期,因此它目前正在運行整個庫。
如果要為轉換后的文件指定與原始文件不同的名稱,請參閱參數擴展 。
如果您希望破壞性地轉換所有文件,請務必小心使用以下命令:
find ./ -iname '*.avi' -o -iname '*.mkv' -exec bash -c 'ffmpeg -i "{}" -c:v libx265 -preset medium -crf 28 -c:a aac "{}".mp4 && rm "{}"' \;
注意:上面的命令不是防彈的,並且在轉換過程完成之前刪除了一些文件,這意味着我現在丟失了這些文件(感謝上帝的備份)。 我使用一次性文件進行了測試,並確保在開始此過程之前,我已完全恢復了數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.