如何减少一些顺序查找(1)调用?

时间:2015-08-21 11:34:53

标签: bash shell find

我觉得这个shell脚本需要重构:

find -name *.java >> filelist.txt && find -name *.ftl >> filelist.txt && find -name *.xhtml >> filelist.txt && find -name *.html >> filelist.txt && find -name *.jrxml >> filelist.txt && find -name *.xml >> filelist.txt

它以递归方式搜索某些文件类型。 你会如何最小化这段代码?

感谢。

3 个答案:

答案 0 :(得分:6)

您可以将表达式与-o标志组合在一起,因此它变为:

find -name '*.java' -o -name '*.xhtml' -o -name '*.jrxml'  >> filelist.txt

等等您的其他文件类型。 注意:引用通配符'*.java'而不是*.java,否则请引用    risk *.java扩展到当前目录中的.java文件。

答案 1 :(得分:4)

如果filelist.txt中文件名的顺序无关紧要,您可以使用-o运算符(这意味着"或"),如下所示:

find -name "*.java" -o -name "*.ftl" ... >> filelist.txt

请注意,这会改变filelist.txt中文件的顺序,与命令一样,所有*.java文件都是第一个,然后是所有*.ftl个文件等。

答案 2 :(得分:-2)

尝试此命令:

for a in *.java *.xhtml *.jrxml; do find -name ${a} >> ; done