这应该很简单,但我不知道。我在Linux下拥有超过4GB的大型代码库。在构建期间生成一些头文件和xml文件(使用gnu make)。如果重要的话,头文件是基于xml文件生成的。
我想在头文件中搜索一个关键字,该关键字是在时间实例(我的开始编译时间)之后的最后修改,以及类似的xml文件,但是单独的grep查询。
如果我在所有可能的头文件或xml文件上运行它,则需要花费很多时间。只有那些自动生成的。此外,搜索必须是递归的,因为有很多目录和子目录。
答案 0 :(得分:13)
您可以使用find
命令:
find . -mtime 0 -type f
打印过去24小时内修改的当前目录(-type f
)内和下方的所有文件(.
)的列表(-mtime 0
,1为48h,2将是72小时,...)。尝试
grep "pattern" $(find . -mtime 0 -type f)
答案 1 :(得分:11)
在递归中查找当前目录及其子目录中'pattern'
以外的所有文件中的some_file
:
find -newer some_file -type f -exec grep 'pattern' {} +
您可以直接以date -d
格式指定时间戳,并使用其他find
测试,例如-name
,-mmin
。
如果find
太慢,您的构建系统也可能会生成文件列表。
答案 2 :(得分:2)
使用它。因为如果find
没有返回文件,那么grep
将继续等待输入停止脚本。
find . -mtime 0 -type f | xargs grep "pattern"