我有一组想要提供给的 glob find。
我的数组是:
arr=('a*.txt' 'b[2-5].sh' 'ab?.doc')
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
find . -type f -name '${arr[@]}'
Run Code Online (Sandbox Code Playgroud)
这里我们的数组可能包含很多元素!感谢您的答复!
使用 搜索多个全局模式的方法find并不像 ; 那样简单find -name "${arr[@]}"。你需要相当于:
find '(' -name 'a*.txt' -o -name 'b[2-5].sh' -o -name 'ab?.doc' ')'
Run Code Online (Sandbox Code Playgroud)
注意:在您的情况下,括号不是强制性的,但您需要它们来添加其他操作数,例如-type f
也就是说,如果你的起点是包含你的 glob 的 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[@]}" ')'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |