在linux系统上find与'name'匹配的所有文件,并search'text'

我需要在linux系统上find'filename.ext'的所有实例,并查看哪些包含文本“查找”。

有没有一套可以工作的linux命令行操作?

find / -type f -name filename.ext -exec grep -l 'lookingfor' {} + 

使用+来终止命令比\;更有效\; 因为find发送一批文件给grep而不是逐个发送。 这避免了每个找到的单个文件的fork / exec。

前一段时间我做了一些测试来比较xargs vs {} + vs {} \; 我发现{} +速度更快。 以下是我的一些结果:

 time find . -name "*20090430*" -exec touch {} + real 0m31.98s user 0m0.06s sys 0m0.49s time find . -name "*20090430*" | xargs touch real 1m8.81s user 0m0.13s sys 0m1.07s time find . -name "*20090430*" -exec touch {} \; real 1m42.53s user 0m0.17s sys 0m2.42s 

转到相应的目录并键入以下命令。

找 。 -name“* .ext”| xargs grep'寻找'

更简单的是,

 find / -type f -name filename.ext -print0 | xargs -0 grep 'lookingfor' 

-print0找到&0到xargs将缓解单个目录中大量文件的问题。

尝试:

 find / -type f -name filename.ext -exec grep -H -n 'lookingfor' {} \; 

从根目录/对于名为filename.ext文件递归地搜索搜索,以及对搜索找到的文件filename.ext的每个找到的匹配项grep进行搜索,如果找到则打印行号( -n )和文件名( -H )。

我发现以下命令是最简单的方法:

 grep -R --include="filename.ext" lookingfor 

或者添加-i来搜索不区分大小写:

 grep -i -R --include="filename.ext" lookingfor