使用数组作为 find 命令的搜索条件

使用数组作为 find 命令的搜索条件

我想知道是否可以声明一个文件类型数组,然后通过 find 命令进行搜索?

所以

fileTypes=(*.omf *.jpeg *.xml *.otf)
find . -name ${fileTypes}

代替:

find . -name '*.omf' -o -name '*.jpeg' -o -name '*.xml' -o -name '*.otf'

答案1

我不相信 find 命令本身支持该功能,但您可以使用这个一行程序循环执行 find 命令来实现所需的功能:

for type in ${fileTypes[@]};do find -name "${type}"; done

需要注意的是,如果您在目录中使用通配符定义数组,而其中任何文件都与模式匹配,则通配符将对文件执行文件名扩展并将该文件名放入数组中。这将导致 find 命令的迭代仅搜索该文件名,而不是具有该扩展名的所有文件。您可以通过定义不使用通配符的数组来避免这种潜在的问题:

fileTypes=(.omf .jpeg .xml .otf)

然后将通配符添加到 find 命令中:find -name "*${type}"

相关内容