基于时间戳的grep文件

时间:2012-01-13 13:57:51

标签: linux ubuntu grep

这应该很简单,但我不知道。我在Linux下拥有超过4GB的大型代码库。在构建期间生成一些头文件和xml文件(使用gnu make)。如果重要的话,头文件是基于xml文件生成的。

我想在头文件中搜索一个关键字,该关键字是在时间实例(我的开始编译时间)之后的最后修改,以及类似的xml文件,但是单独的grep查询。

如果我在所有可能的头文件或xml文件上运行它,则需要花费很多时间。只有那些自动生成的。此外,搜索必须是递归的,因为有很多目录和子目录。

3 个答案:

答案 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太慢,您的构建系统也可能会生成文件列表。

可以使用acketagsGCCSense等更具体的工具代替grep

答案 2 :(得分:2)

使用它。因为如果find没有返回文件,那么grep将继续等待输入停止脚本。

find . -mtime 0 -type f | xargs grep "pattern"