Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Grep在日期范围内创建的所有文件中_Linux_Ubuntu_Find_Grep_Date Range - Fatal编程技术网

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

Linux Grep在日期范围内创建的所有文件中,linux,ubuntu,find,grep,date-range,Linux,Ubuntu,Find,Grep,Date Range,我在Ubuntu操作系统上。我想在2012年5月28日至2012年5月30日期间创建的所有日志文件中添加一个单词(比如XYZ) 如何做到这一点?将grep与: 这与Banthar的解决方案稍有不同,但它将适用于不支持-newermt的find版本,并演示如何使用xargs命令,这是一个非常有用的工具 您可以使用find命令查找“某一时期”的文件。这将查找5到10天前修改的所有文件: find /directory -type f -mtime -10 -mtime +5 然后在这些文件中搜索

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

如何做到这一点?

将grep与:


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

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

更新评论中的问题

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

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

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

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

$ date
Fri Aug 19 12:55:21 EDT 2016
我有以下文件:

$ ls -l
total 0
-rw-rw-r--. 1 lars lars 0 Aug 15 00:00 file1
-rw-rw-r--. 1 lars lars 0 Aug 10 00:00 file2
-rw-rw-r--. 1 lars lars 0 Aug  5 00:00 file3
如果我要求“5天前修改的文件(
-mtime+5
),我会得到:

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


find
似乎没有为时间戳比较指定具体日期的选项(至少我笔记本电脑上的版本没有-可能有其他版本和/或其他工具执行类似操作),因此您必须使用天数。因此,从2012/06/05起,您希望查找比9天新但比6天旧的文件:

find . -type f -ctime -9 -ctime +6 -print0 | xargs -0 grep XYZ

这个
-newermt
选项似乎没有文档记录-它既没有出现在链接中,也没有出现在我的手册页中。但是,它太棒了!你是如何发现它的?@brandizzi它在
-newerXY
下。服务器故障中的一个相关问题:有人能解释一下如何使用指定-mtime两次来指定范围吗?具体来说,为什么是neg第一次出现的是一个数字,第二次出现的是一个正数?要么我不明白,要么它在Ubuntu 14.04.3 LTS上不起作用。我看到的手册页中没有讨论它。@battey,我更新了我的答案,回答了你的问题。为什么不
-mtime
(修改时间)?
-ctime
表示状态时间(无论是什么)。
$ find . -mtime +5
./file3
./file2
$ find . -mtime +5 -mtime -10
./file2
find . -type f -ctime -9 -ctime +6 -print0 | xargs -0 grep XYZ