在查找项目在文件中列出的次数时,是更多还是查找更多资源?

Sir*_*alt 0 find more resources

我最近阅读了如何使用 find 命令查找文本和文件的总出现次数,其中询问了一种查找文本“abc”在文件中出现的次数的方法。那里的答案提供了find . -name "*.txt" | xargs grep -i "abc" | wc -l查找计数的命令。

以前more "file_name*" |grep "abc" |wc -l,如果文本“abc”出现在特定文件中的次数,我曾使用类似的方法列出数字。

我尝试了这个,发现more命令返回的速度更快,但似乎比命令使用了大约 30% 的 CPU(我也通过 监视topfind

我想知道如果您要查询大约 15 个文件,是否有人拥有关于这两个命令中哪一个对资源更密集的更可靠的数据?30多个文件怎么样?

Mat*_*teo 5

如果您有需要 grep 的文件列表,则不需要more(或cat):只需grep将文件作为参数提供(无需通过第二个工具传输数据):

grep -i abc *.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

主要区别在于它find不仅会列出当前目录中的文件(作为 的 shell 扩展*.txt),而且还会递归到子目录中:

find . -name "*.txt" | xargs grep -i abc | wc -l
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,如果*.txt子目录中有一些文件,这些文件也作为grep命令的参数提供。

顺便说一句grep,可以-c选择计算出现次数(wc两者都不需要)

grep -c -i abc *txt
Run Code Online (Sandbox Code Playgroud)

它也只会给出每个文件的出现次数而不是总数