我在Ubuntu操作系统上。我想在2012年5月28日至2012年5月30日期间创建的所有日志文件中添加一个单词(比如XYZ)
我该怎么做
这与Banthar的解决方案稍有不同,但它将适用于不支持-newermt
的find
版本,并演示如何使用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