基于时间戳的grep文件

这应该是非常简单的,但我没有搞清楚。 我在Linux下有一个大于4GB的代码库。 在构build过程中会生成一些头文件和xml文件(使用gnu make)。 如果重要的话,头文件是基于xml文件生成的。

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

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

Solutions Collecting From Web of "基于时间戳的grep文件"

要在当前目录及其子目录中比some_file更新的所有文件中查找'pattern'

 find -newer some_file -type f -exec grep 'pattern' {} + 

您可以直接以date -d格式指定时间戳,并使用其他find测试,例如-name-mmin

如果find太慢,文件列表也可能由您的构建系统生成。

可以使用更多特定的工具,如acketagsGCCSense代替grep

你可以使用find命令:

 find . -mtime 0 -type f 

打印当前目录( . )中和过去24小时内修改过的所有文件( -type f )的列表( -mtime 0将是48h,2将是72h,…)。 尝试

 grep "pattern" $(find . -mtime 0 -type f) 

用这个。 因为如果find没有返回一个文件,那么grep会一直等待输入停止脚本。

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