我有一个要转换的视频列表。要建立我需要使用的文件列表,请使用以下内容:
file_list=( $(find . \( \
-name '*.[Mm][Oo][Vv]' -o \
-name '*.[Aa][Vv][Ii]' -o \
-name '*[!-][!h][!v][!c][!1].mp4' \
\) -print) )
task_list=()
for i in "${!file_list[@]}" ; do
m="${file_list[$i]}"
n="${m%.*}-hvc1.mp4"
if [[ ! -f "$n" ]] ; then
task_list+=("$m")
fi
done
我是否可以通过某种方式将这个逻辑折叠成find
并一次性获得文件列表,或者我被困在通过两次find
的脚本中,然后我必须做一个循环吗?
答案 0 :(得分:0)
这可能对您有用
task_list=()
for file in *.[Mm][Oo][Vv] *.[Aa][Vv][Ii] *[!-][!h][!v][!c][!1].mp4 ; do
n="${file%.*}-hvc1.mp4"
if [[ ! -f "$n" ]] ; then
task_list+=("$file")
fi
done
不使用find
,但我认为这不是必须的。