这应该很简单,但我没有搞清楚。我在Linux下有一个超过4GB的大代码库。构建期间会生成一些头文件和xml文件(使用gnu make)。如果重要的话,头文件是基于xml文件生成的。基于时间戳的grep文件
我想在一个时间实例(它是我的开始编译时间)之后最后修改的头文件中搜索关键字,以及类似的xml文件,但单独的grep查询。
如果我在所有可能的头文件或xml文件上运行它,它会花费很多时间。只有那些是自动生成的。此外,搜索必须是递归的,因为有很多目录和子目录。
这应该很简单,但我没有搞清楚。我在Linux下有一个超过4GB的大代码库。构建期间会生成一些头文件和xml文件(使用gnu make)。如果重要的话,头文件是基于xml文件生成的。基于时间戳的grep文件
我想在一个时间实例(它是我的开始编译时间)之后最后修改的头文件中搜索关键字,以及类似的xml文件,但单独的grep查询。
如果我在所有可能的头文件或xml文件上运行它,它会花费很多时间。只有那些是自动生成的。此外,搜索必须是递归的,因为有很多目录和子目录。
要在所有文件中找到'pattern'
更新比some_file
在当前目录及其子目录递归:
find -newer some_file -type f -exec grep 'pattern' {} +
你可以在date -d
格式直接指定时间戳记,并使用其他find
测试如,-name
,-mmin
。
如果find
太慢,文件列表也可能由您的构建系统生成。
谢谢,我遇到了比回答更有价值的东西。我从未遇到过GCCSense。我正在寻找vim中的eclipse代码补全功能。猜猜它最近开发的。 – Kamath 2012-01-16 05:09:15
为什么地球上有一个“新手”标志,但不是“ - ol”标志? – Guillochon 2016-05-14 16:12:35
@Guillochon:['! -newer'](http://stackoverflow.com/q/13838845/4279) – jfs 2016-05-14 16:17:06
您可以使用find
命令:
find . -mtime 0 -type f
并在过去的24小时(-mtime 0
进行了修改,当前目录(.
)所示打印所有文件(-type f
)的列表,1人48小时,2将是72小时,...)。尝试
grep "pattern" $(find . -mtime 0 -type f)
真棒解答,在CentOS 5.6上运行良好。 – crmpicco 2013-12-09 10:06:30
使用此。因为如果find
没有返回文件,则grep
将继续等待输入暂停脚本。
find . -mtime 0 -type f | xargs grep "pattern"
您可能想要包含当前命令的示例。节省我们指出你已经知道的明显东西的麻烦。 – sehe 2012-01-13 15:12:02