![使用数组作为 find 命令的搜索条件](https://linux22.com/image/1488200/%E4%BD%BF%E7%94%A8%E6%95%B0%E7%BB%84%E4%BD%9C%E4%B8%BA%20find%20%E5%91%BD%E4%BB%A4%E7%9A%84%E6%90%9C%E7%B4%A2%E6%9D%A1%E4%BB%B6.png)
我想知道是否可以声明一个文件类型数组,然后通过 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}"