我有一个glob数组,要将其提供给find
。
我的阵列是:
arr=('a*.txt' 'b[2-5].sh' 'ab?.doc')
我试过了:
find . -type f -name '${arr[@]}'
在这里,我们的数组可能包含许多元素!感谢您的回复!
使用find
搜索多个glob模式的方法不如find -name "${arr[@]}"
简单;你需要类似于的东西
find '(' -name 'a*.txt' -o -name 'b[2-5].sh' -o -name 'ab?.doc' ')'
注意:括号在您的情况下不是强制性的,但您需要它们来添加其他操作数,如-type f
也就是说,如果你的起点是一个包含globs的bash数组,那么你可以像这样构建find
的参数:
arr=('a*.txt' 'b[2-5].sh' 'ab?.doc')
names=()
for glob in "${arr[@]}"
do
[[ $names ]] && names+=( -o )
names+=(-name "$glob")
done
find '(' "${names[@]}" ')'