如何基于文件时间戳筛选目录内文件执行grep内容检索
针对近期修改文件执行grep检索的实现方法
通用兼容方案(支持所有bash/sh环境)
推荐使用find配合grep实现需求,兼容性最高,同时支持处理含特殊字符的文件名:
find ./ -type f -mtime -2 -print0 | xargs -0 grep '0xdataH2O'
参数说明
-type f:仅检索普通文件,自动跳过目录、符号链接等非文件对象-mtime -2:筛选修改时间距当前小于48小时的文件,数字可按需调整,如需检索最近24小时内修改的文件,替换为-mtime -1即可-print0+xargs -0:使用空字符作为文件名分隔符,避免文件名包含空格、换行等特殊字符时命令执行异常- 如需同时输出匹配内容的所属文件名与行号,可给grep添加
-Hn参数:find ./ -type f -mtime -2 -print0 | xargs -0 grep -Hn '0xdataH2O'
如果需要按分钟粒度筛选修改时间,可将-mtime替换为-mmin,例如筛选最近120分钟内修改的文件:
find ./ -type f -mmin -120 -print0 | xargs -0 grep '0xdataH2O'
zsh环境简化写法
如果使用zsh作为运行shell,可通过glob限定符实现更简洁的写法:
grep '0xdataH2O' ./**/*(m-2)
其中**/*代表递归遍历当前目录下的所有文件,(m-2)为zsh专属的glob限定符,仅匹配最近2天内修改的文件。
内容的提问来源于stack exchange,提问作者David542
相关产品推荐
相关产品推荐

