Shell-Script
移動和重命名短於 3 分鐘的影片文件 (*.mp4)
我正在嘗試創建一個 bash 腳本來移動/重命名(和/或創建符號連結)到所有短於 3 分鐘的影片文件。
到目前為止,我有這個 Find 命令:
find "$findpath" -maxdepth "2" -type f -name '*.mp4' -print -exec avprobe -v error -show_format_entry duration {} \;
接著
if [ $duration -ge $DUR_MIN -a $dur -le $DUR_MAX ] cd "$path2" ln -sFfhv "$path1$file" "$file2" fi
這是做你想做的嗎?
dur_min=180 dur_max=3600 # or whatever you want the max to be # find the appropriate files and deal with them one at a time find "$findpath" -maxdepth 2 -type f -iname '*.mp4' -print | while read file ; do # read duration duration="$(ffprobe -v quiet -print_format compact=print_section=0:nokey=1:escape=csv -show_entries format=duration "$file")" # trim off the decimals; bash doesn't do floats duration=${duration%.*} if [[ $duration -gt $dur_min ]] && [[ $duration -lt $dur_max ]] ; then echo "$file is $duration seconds long (rounded down)" # do whatever you want, mv, ln, etc. fi done
注意我使用
iname
而不是name
使其不區分大小寫(*.MP4 等)另外,我使用的是 ffprobe 而不是 avprobe (我沒有),但你有 ffmpeg 標記,所以我想沒關係?