如何减少连续的 find(1) 调用次数?
How to reduce a number of sequential find(1) invocations?
我觉得这个 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
它递归地搜索某些文件类型。
您将如何最小化此代码?
谢谢。
如果 filelist.txt
中的文件名顺序无关紧要,您可以像这样使用 -o
运算符(即 "or"):
find -name "*.java" -o -name "*.ftl" ... >> filelist.txt
请注意,这将更改 filelist.txt
中文件的顺序,就像您的命令一样,所有 *.java
文件将排在第一位,然后是所有 *.ftl
文件,依此类推。
您可以将表达式与 -o
标志结合起来,因此它变成:
find -name '*.java' -o -name '*.xhtml' -o -name '*.jrxml' >> filelist.txt
其他文件类型依此类推。
注意:引用通配符 '*.java'
而不是 *.java
,否则你
风险 *.java
扩展到您当前目录中的 .java 个文件。
试试这个命令:
for a in *.java *.xhtml *.jrxml; do find -name ${a} >> ; done
我觉得这个 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
它递归地搜索某些文件类型。 您将如何最小化此代码?
谢谢。
如果 filelist.txt
中的文件名顺序无关紧要,您可以像这样使用 -o
运算符(即 "or"):
find -name "*.java" -o -name "*.ftl" ... >> filelist.txt
请注意,这将更改 filelist.txt
中文件的顺序,就像您的命令一样,所有 *.java
文件将排在第一位,然后是所有 *.ftl
文件,依此类推。
您可以将表达式与 -o
标志结合起来,因此它变成:
find -name '*.java' -o -name '*.xhtml' -o -name '*.jrxml' >> filelist.txt
其他文件类型依此类推。
注意:引用通配符 '*.java'
而不是 *.java
,否则你
风险 *.java
扩展到您当前目录中的 .java 个文件。
试试这个命令:
for a in *.java *.xhtml *.jrxml; do find -name ${a} >> ; done