用正则表达式查找。使用变量中的字符串文字
find with regex. Using string literals from variable
我知道 shell 并没有真正的数组,但我知道我可以用值列表来做到这一点:
dir_array=("quarantine" "720" "low" "high" "DVD" "error" "keep")
for d in "${dir_array[@]}"
do
…
done
我也知道我可以使用 -regex 和 -prune 从查找中排除这些目录:
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 而不是重复自己?
您可以将数组转换为字符串变量,然后在 find 命令中使用该变量,如下所示:
str=`echo "./(${dir_array[@]})" | sed "s/ /\|/g;"`
echo "$str"
我知道 shell 并没有真正的数组,但我知道我可以用值列表来做到这一点:
dir_array=("quarantine" "720" "low" "high" "DVD" "error" "keep")
for d in "${dir_array[@]}"
do
…
done
我也知道我可以使用 -regex 和 -prune 从查找中排除这些目录:
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 而不是重复自己?
您可以将数组转换为字符串变量,然后在 find 命令中使用该变量,如下所示:
str=`echo "./(${dir_array[@]})" | sed "s/ /\|/g;"`
echo "$str"