一尘不染

在Linux系统上找到所有与“名称”匹配的文件,并在其中搜索“文本”

linux

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

有一套可以使用的linux命令行操作吗?


阅读 341

收藏
2020-06-07

共1个答案

一尘不染

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

使用a
+来终止命令比\;因为find将整批文件grep发送到而不是一个一个地发送文件来效率更高。这样可以避免为找到的每个单个文件派生/执行。

不久前,我做了一些测试以比较xargsvs {} +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
2020-06-07