在Linux系统上找到所有与'name'匹配的文件,并用它们搜索'text'

l7mqbcuq  于 2023-05-16  发布在  Linux
关注(0)|答案(5)|浏览(120)

我需要在linux系统上找到所有'filename.ext'的示例,并查看哪些示例包含文本'lookingfor'。
有没有一套Linux命令行操作可以工作?

s5a0g9ez

s5a0g9ez1#

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

使用+终止命令比\;更有效,因为find会将整批文件发送到grep,而不是逐个发送。这避免了对找到的每个文件都执行fork/exec。
不久前,我做了一些测试,比较了xargs{} +{} \;的性能,我发现{} +更快。以下是我的一些结果:

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
dpiehjr4

dpiehjr42#

转到相应的目录并键入以下命令。
find . -name“*.ext”|xargs grep 'lookingfor'

oxf4rvwz

oxf4rvwz3#

一个更简单的方法是

find / -type f -name filename.ext -print0 | xargs -0 grep  'lookingfor'
  • print 0 to find & 0 to xargs将缓解单个目录中大量文件的问题。
f2uvfpb9

f2uvfpb94#

尝试:

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

find从根目录/开始递归搜索名为filename.ext的文件,并对每个找到的文件名运行grep搜索lookingfor,如果找到,则打印行号(-n)和文件名(-H)。

vktxenjb

vktxenjb5#

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

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

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

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

相关问题