我知道shell实际上没有数组,但我知道我可以用一个值列表来做这个:
dir_array=("quarantine" "720" "low" "high" "DVD" "error" "keep")
for d in "${dir_array[@]}"
do
…
done
我也知道我可以使用-regex和-prune:
从find中排除这些目录find -E . \
-type d -regex './(DVD|quarantine|720|high|low|error|keep)' -prune -o \
-type f -iregex '.*.(avi|wmv|mp4|m4v|mov|mkv)' -print
所以,最后,这是我的问题:
如何在查找中的(第一个)正则表达式中使用原始$ dir_array而不是重复自己?
答案 0 :(得分:1)
您可以将数组转换为字符串变量,然后在find命令中使用该变量,如下所示:
str=`echo "./(${dir_array[@]})" | sed "s/ /\|/g;"`
echo "$str"