【问题标题】:grep files based on time stamp基于时间戳的 grep 文件
【发布时间】:2012-02-09 17:18:30
【问题描述】:

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

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

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

【问题讨论】:

  • 您可能希望包含当前命令的示例。省去了我们指出您已经知道的明显内容的麻烦。

标签: linux ubuntu grep


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    可以使用更具体的工具,例如acketagsGCCSense,而不是grep

    【讨论】:

    • 谢谢,我发现了一些比回答更有价值的东西。我从来没有遇到过 GCCSense。我一直在寻找 vim 中的 eclipse 代码完成功能。猜猜它是最近开发的。
    • 啊哈!太明显了!
    【解决方案3】:

    您可以使用find 命令:

    find . -mtime 0 -type f
    

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      相关资源
      最近更新 更多