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
5条答案
按热度按时间s5a0g9ez1#
使用
+
终止命令比\;
更有效,因为find
会将整批文件发送到grep
,而不是逐个发送。这避免了对找到的每个文件都执行fork/exec。不久前,我做了一些测试,比较了
xargs
和{} +
和{} \;
的性能,我发现{} +
更快。以下是我的一些结果:dpiehjr42#
转到相应的目录并键入以下命令。
find . -name“*.ext”|xargs grep 'lookingfor'
oxf4rvwz3#
一个更简单的方法是
f2uvfpb94#
尝试:
find
从根目录/
开始递归搜索名为filename.ext
的文件,并对每个找到的文件名运行grep搜索lookingfor
,如果找到,则打印行号(-n
)和文件名(-H
)。vktxenjb5#
我发现以下命令是最简单的方法:
或添加
-i
以搜索不区分大小写: