Grep在日期范围内创建的所有文件中

我在Ubuntu操作系统上。我想在2012年5月28日至2012年5月30日期间创建的所有日志文件中添加一个单词(比如XYZ)

我该怎么做

这与Banthar的解决方案稍有不同,但它将适用于不支持-newermtfind版本,并演示如何使用xargs命令,这是一个非常有用的工具

您可以使用find命令查找“某一时期”的文件。这将查找5到10天前修改的所有文件:

find/directory-type f-mtime-10-mtime+5

然后在这些文件中搜索字符串:

find/directory-type f-mtime-10-mtime+5-print0|
xargs-0 grep-l表达式

您也可以使用-exec开关,但我发现xargs更具可读性(通常它的性能也会更好,但在这种情况下可能不会)

(请注意,-0标志允许此命令对带有嵌入空格的文件进行操作,例如这是我的文件名

更新评论中的问题

当您为查找提供多个表达式时,它们将被合并在一起。例如,如果您要求:

查找-名称foo-尺寸+10k

find将只返回(a)名为foo和(b)大于10 KB的文件。类似地,如果您指定:

查找-mtime-10-mtime+5

find将只返回(a)比10天前更新的(b)比5天前旧的文件

例如,在我的系统上,它当前是:

$date
2016年8月19日星期五12:55:21美国东部时间

我有以下文件:

$ls-l
总数0
-rw-rw-r--。1拉尔斯拉尔斯0八月15日00:00文件1
-rw-rw-r--。1拉尔斯拉尔斯0 8月10日00:00文件2
-rw-rw-r--。1拉尔斯拉尔斯0 8月5日00:00文件3

如果我要求“5天前修改的文件(-mtime+5),我会得到:

$find.-mtime+5
/文件3
/文件2

但如果我要求“文件在5天前修改,但不到10天前修改”(-mtime+5-mtime-10),我会得到:

$find.-mtime+5-mtime-10
/文件2

发表评论