我正在尝试找到一个0天的文件。以下是我为测试此步骤而执行的步骤
$ ls
$ ls -ltr
total 0
$ touch tmp.txt
$ ls -ltr
total 0
-rw-r----- 1 tstUser tstUser 0 Feb 28 20:02 tmp.txt
$ find * -mtime 0
$
$ find * -mtime -1
tmp.txt
$
为什么'-mtime 0'没有给我这个文件?
'-mtime 0'和'-mtime -1'之间的确切区别是什么?
我确定必须有其他方法可以在unix中找到0天之前的文件,但我很好奇这个'-mtime'实际上是如何工作的。
答案 0 :(得分:6)
find
这不是用户友好的方面 - 您必须了解匹配实际上如何正确定义您的搜索条件。以下说明基于GNU find(findutils)4.4.2。
find
测试-atime
,-ctime
,-mtime
工作24小时,因此我们将“文件年龄”定义为
floor (current_timestamp - file_modification_timestamp / 86400)
鉴于3小时前,25小时前和49小时前修改过的三个文件
$ touch -t $(date -d "1 hour ago" +"%m%d%H%M") a.txt
$ touch -t $(date -d "25 hours ago" +"%m%d%H%M") b.txt
$ touch -t $(date -d "49 hours ago" +"%m%d%H%M") c.txt
文件年龄(如上所述)是
$ echo "($(date +"%s") - $(stat -c %Y a.txt)) / 86400" | bc
0
$ echo "($(date +"%s") - $(stat -c %Y b.txt)) / 86400" | bc
1
$ echo "($(date +"%s") - $(stat -c %Y c.txt)) / 86400" | bc
2
鉴于上述情况,这就是找到的内容
$ find -type f -mtime 0 # find files with file age == 0, i.e. files modified less than 24 hours ago
./a.txt
$ find -type f -mtime -1 # find files with file age < 1, i.e. files modified less than 24 hours ago
./a.txt
$ find -mtime 1 # find files with file age == 1, i.e. files modified more than (or equal to) 24 hours ago, but less than 48 hours ago
./b.txt
$ find -mtime +1 # find files with file age > 1, i.e. files modified more than 48 hours ago
./c.txt
这表明-mtime 0
和-mtime -1
会给出相同的结果。
-mmin
以更精细的粒度给出相同的测试 - 参数是分钟而不是24小时。
我无法使用上述版本的find
$ touch tmp.txt
$ find * -mtime 0
tmp.txt
$ find * -mtime -1
tmp.txt
答案 1 :(得分:5)
-mtime n
File's data was last modified n*24 hours ago. See the comments
for -atime to understand how rounding affects the interpretation
of file modification times.
因此,-mtime 0将等于:“文件的数据是在0小时前修改的。 而-mtime 1将是:“文件的数据最后修改时间为24小时”
编辑:
Numeric arguments can be specified as
+n for greater than n,
-n for less than n,
n for exactly n.
所以我猜-1会在过去24小时内被修改,而1则恰好是一天。
答案 2 :(得分:0)
这三种可能性的含义如下:
n:恰好是n个24小时(天)之前,0表示今天。
+ n:“超过24小时(天)之前”,或者更早,然后是n,
-n:少于n个24小时(天)之前(-n),或者小于n。 很明显-1和0是相同的,都意味着“今天”。
注意:如果在脚本中使用带有find命令的参数,则在-mtime参数等于零时要小心。一些(早期)版本的GNU发现错误地解释了以下表达式 Sourece:http://www.softpanorama.org/Tools/Find/index.shtml