目前,我使用这个版本的 grep -rlw
grep -rlw . -e "string_to_search"
搜索包含“string_to_search”的整个文件。
我想修改它以查找不超过 7 天的文件。
我该怎么做?
grep -rlw . -e "string_to_search" | find -mtime +7|print
像这样的东西会起作用吗?
目前,我使用这个版本的 grep -rlw
grep -rlw . -e "string_to_search"
搜索包含“string_to_search”的整个文件。
我想修改它以查找不超过 7 天的文件。
我该怎么做?
grep -rlw . -e "string_to_search" | find -mtime +7|print
像这样的东西会起作用吗?
您需要使用
find
或 来zsh
根据年龄查找要传递到的文件grep
。find
:zsh
:使用
zsh
避免了./
添加到文件路径的前缀并为您提供排序列表,但这意味着我们需要(--
对于非 POSIXgrep
,例如 GNUgrep
或兼容)来防止以-
. 该zsh
方法可能会达到系统execve()
对参数+环境大小的限制,可以使用zargs
自动加载函数来解决这一问题。find
使用,sort
和的 GNU 实现xargs
,您还可以避免./
前缀并对列表进行排序:-mtime -7
并m-7
匹配其年龄(基于 mtime)向下舍入为整数天数(在本例中一天为 86400 Unix 秒的持续时间)严格小于 7 的文件。因此,这通常是自同一时间以来最后修改的文件上周(或将来)的同一天,除非时间间隔内 DST 发生变化。-mtime +7
年龄严格大于 7,因此适用于 8 天(8 * 86400 秒)或更早的文件。