我的linux服务器有一个包含许多其他子目录的目录,其中包含用关键字命名的文件。例如:
Dir1:
-Dir1.1:
-file-keyword11-keyword7-keyword9.txt
-file-keyword2-keyword7-keyword97.txt
-Dir1.2:
-file-keyword4-keyword6-keyword9.txt
-file-keyword2-keyword8-keyword3.txt
Dir2:
-Dir2.1:
-file-keyword5-keyword42-keyword2.txt
-file-keyword8-keyword11-keyword9.txt
我需要创建一个方法来返回包含两个关键字之一的所有文件的列表。例如:
findFiles("keyword11", "keyword42");
应返回上一示例的以下文件:
-file-keyword11-keyword7-keyword9.txt
-file-keyword5-keyword42-keyword2.txt
-file-keyword8-keyword11-keyword9.txt
我正在考虑创建一个递归方法来测试每个文件的名称是否包含这两个关键字中的一个。但是我担心性能,因为目录有成千上万的文件和子目录。每天都会有越来越多的文件被创建。
我想知道怎样做才是正确的方法。我应该用吗 file.getName().contains()
方法?我应该用正则表达式吗?或者我应该使用像grep这样的linux命令?
1条答案
按热度按时间h79rfbju1#
你可以使用filevisitor,非常方便。
以下是示例:
如果要对目录执行smth,请使用
preVisitDirectory
以及postVisitDirectory
方法在访问目录之前和之后执行smth。