我想知道是否可以声明一个文件类型数组,然后通过 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}"