gpt4 book ai didi

bash - 如何在查找中使用 Bash glob 数组?

转载 作者:行者123 更新时间:2023-12-05 01:52:02 25 4
gpt4 key购买 nike

我有一个 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/p>

也就是说,如果您的起点是一个包含 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[@]}" ')'

关于bash - 如何在查找中使用 Bash glob 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71816051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com