找到正则表达式。使用变量中的字符串文字

时间:2016-02-07 20:05:49

标签: regex bash find

我知道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而不是重复自己?

1 个答案:

答案 0 :(得分:1)

您可以将数组转换为字符串变量,然后在find命令中使用该变量,如下所示:

str=`echo "./(${dir_array[@]})" | sed "s/ /\|/g;"` 
echo "$str"