Heim >php教程 >PHP开发 >Verstehen Sie die Bedeutung des Parameters -mtime des Befehls find gründlich

Verstehen Sie die Bedeutung des Parameters -mtime des Befehls find gründlich

高洛峰
高洛峰Original
2016-12-14 17:16:321618Durchsuche

Ich habe die wahre Bedeutung des Parameters -mtime von find noch nie verstanden.
Als ich Shell-Skripte schrieb und regelmäßig einige Dateien löschte, habe ich den Parameter -mtime oft verwendet, also wollte ich einen genaueren Blick darauf werfen Setzen Sie es in die Praxis um. Lassen Sie uns die Erklärung in

man find verstehen:
-mtime n
Die Daten der Datei wurden zuletzt vor n*24 Stunden geändert, um zu verstehen, wie
Das Runden wirkt sich auf die Interpretation der Dateiänderungszeiten aus.

-atime n
Auf die Datei wurde zuletzt vor n*24 Stunden zugegriffen. Wenn ermittelt wird, vor wie vielen 24-Stunden-Zeiträumen die Datei zuletzt aufgerufen wurde Beim Zugriff wird jeder Bruchteil ignoriert. Um also mit -atime +1 übereinzustimmen, muss eine Datei
Zugriff haben, Ihr Home-Verzeichnis, das in den letzten vierundzwanzig Stunden geändert wurde. Dieser
Befehl funktioniert auf diese Weise weil die Zeit seit der letzten Änderung jeder Datei durch 24 Stunden geteilt wird und der Rest verworfen wird. Das bedeutet, dass eine Datei eine Änderung in der Vergangenheit haben muss, um mit - mtime 0 übereinzustimmen Vor 24 Stunden.

Die folgende Dateiliste wird für Experimente verwendet
[oracle@goolen arch]$ ll -h
insgesamt 1,1G
-rw-r----- 1 oracle oinstall 40M 29. Apr. 22:00 archive_1_53_844522225.arc
-rw-r----- 1 oracle oinstall 45M 29. Apr. 22:29 archive_1_54_844522225.arc
-rw-r----- 1 oracle oinstall 38M 30. Apr. 16:30 archive_1_55_844522225.arc
-rw-r----- 1 Oracle oinstall 38M 30. Apr. 16:35 archive_1_56_844522225.arc
-rw-r----- 1 Oracle oinstall 42M Apr 30 22:00 archive_1_57_844522225.arc
-rw-r----- 1 oracle oinstall 45M 30. April 22:36 archive_1_58_84452 2225 .arc
-rw-r----- 1 oracle oinstall 38M 1. Mai 14:00 archive_1_59_844522225.arc
-rw-r----- 1 Oracle oinstall 38M 1. Mai 22:00 archive_1_60_844522225.arc
-rw-r----- 1 oracle oinstall 41M 1. Mai 22: 37 archive_1_61_844522225.arc
-rw-r----- 1 oracle oinstall 41M 2. Mai 22:00 archive_1_62_844522225.arc
-rw-r----- 1 oracle oinstall 45M 2. Mai 22:38 4522225 .arc
-rw-r----- 1 Oracle oinstall 42M 3. Mai 06:00 archive_1_64_844522225.arc
- rw-r----- 1 oracle oinstall 40M 3. Mai 14:09 archive_1_65_844522225.arc
-rw-r----- 1 Oracle oinstall 45M 3. Mai 22:39 archive_1_66_844522225.arc
-rw- r----- 1 oracle oinstall 39M 4. Mai 06:00 archive_1_67_844522225.arc
-rw-r----- 1 Oracle oinstall 38M 4. Mai 17:00 archive_1_68_844522225.arc
-rw-r- ---- 1 Oracle oinstall 45M 5. Mai 08:10 archive_1_69_844522225.arc
- rw-r----- 1 oracle oinstall 45M 5. Mai 10:28 archive_1_70_844522225.arc
-rw-r--- -- 1 oracle oinstall 6.7M 5. Mai 14:57 archive_1_71_844522225.arc
-rw -r----- 1 Oracle oinstall 38M 5. Mai 22:00 archive_1_72_844522225.arc
-rw-r---- - 1 oracle oinstall 38M 6. Mai 08:28 archive_1_73_844522225.arc
-rw-r ----- 1 Oracle-Installation 38M 6. Mai 14:00 archive_1_74_844522225.arc
-rw-r----- 1 Oracle-Installation 39M 6. Mai 22:00 archive_1_75_844522225.arc
-rw-r-- ---- 1 oracle oinstall 45M 7. Mai 08:29 archive_1_76_844522225.arc
-rw-r----- 1 oracle oinstall 38M 7. Mai 22:00 archive_1_77_844522225.arc
-rw-r---- - 1 Oracle oinstall 38M 8. Mai 05:00 archive_1_78_844522225.arc
-rw-r----- 1 oracle oinstall 38M 8. Mai 09:00 archive_1_79_844522225.arc

[oracle@goolen arch]$ Datum
Do 8. Mai 16:29:09 CST 2014
++Es ist jetzt der 8. Mai 16:30

+++ Werfen wir zunächst einen Blick auf die Ausgabe von -mtime +1 Parameter:
[oracle@goolen arch]$ find ./* -name "*.arc" -mtime +1 -exec ls -l {} ;
-rw-r----- 1 oracle oinstall 41009664 29. Apr. 22:00 ./archive_1_53_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 29. Apr. 22:29 ./archive_1_54_844522225.arc
-rw-r--- -- 1 oracle oinstall 39376384 30. April 16:30 ./archive_1_55_844522225.arc
-rw-r----- 1 r---- - 1 Oracle-Installation 43597312 30. April 22:00 ./archive_1_57_844522225.arc
-rw-r----- 1 Oracle-Installation 46589440 30. April 22:36 ./archive_1_58_844522225.arc
- rw-r-- ----- 1 Oracle-Installation 39395328 1. Mai 14:00 ./archive_1_59_844522225.arc
-rw-r----- 1 Oracle-Installation 39623168 1. Mai 22:00./archive_1_60_844522225.arc
-rw -r ----- 1 Oracle oinstall 42701824 1. Mai 22:37 ./archive_1_61_844522225.arc
-rw-r----- 1 Oracle oinstall 42967040 2. Mai 22:00 ./archive_1_62_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 2. Mai 22:38 ./archive_1_63_844522225. Bogen
-rw-r----- 1 Oracle oinstall 43959808 3. Mai 06:00 ./archive_1_64_844522225.arc
-rw-r----- 1 oracle oinstall 41638400 3. Mai 14:09 ./archive_1_65_8445 22225. arc
-rw-r----- 1 Oracle oinstall 46589440 3. Mai 22:39 ./archive_1_66_844522225.arc
-rw-r----- 1 oracle oinstall 39922176 4. Mai 06:00 ./ archive_1_67_844522225.arc
-rw-r----- 1 oracle oinstall 39352832 4. Mai 17:00 ./archive_1_68_844522225.arc
-rw-r----- 1 oracle oinstall 46589440 5. Mai 0 8:10 ./archive_1_69_844522225.arc
-rw-r----- 1 Oracle-Installation 46373888 5. Mai 10:28 ./archive_1_70_844522225.arc
-rw-r----- 1 Oracle-Installation 7001600 Mai  5 14 :57 ./archive_1_71_844522225.arc
-rw-r----- 1 Oracle-Installation 39364608 5. Mai 22:00 ./archive_1_72_844522225.arc
-rw-r----- 1 Oracle-Installation 394772 48. Mai 6 08:28 ./archive_1_73_844522225.arc
-rw-r----- 1 oracle oinstall 39361024 6. Mai 14:00 ./archive_1_74_844522225.arc

+++命令返回的文件列表为archive_1_53_844522225.arc - archive_1_74_844522225.arc
从时间上来看,就是截至到5月6号 14点的
5月6号 还有一个文件是晚上22点生成的,输出结果里没有
-rw-r----- 1 oracle oinstall  39M 6. Mai 22:00 archive_1_75_844522225.arc
按我以前的理解(错误的),-mtime +1 7号之前的所有文件,但是这里却没有输出6号晚上22点生成的archive_1_75_844522225.arc这个文件

正确的解释:
-mtime+1 表示文件修改时间为大于1天的文件,即距离当前时间2 48小时)之外的文件
这也能解释了,为什么6号22点生成的这个文件为什么没有输出出来
这里-mtime +1 为什么是48小时以外,而不是24小时以外呢,因为n只能是整数,比1大的下一个整数是2,所以是48小时以外的

下面来看 -mtime 1的输出结果:
[oracle@goolen arch] $ find ./* -name "*.arc" -mtime 1 -exec ls -l {} ;  
-rw-r----- 1 Oracle-Installation 40737280 6. Mai 22:00 ./archive_1_75_844522225.arc
-rw-r----- 1 Oracle-Installation 46589440 7. Mai 08:29 ./archive_1_76_8445 22225 .ARC文件

解释:
-mtime 1 表示文件修改时间距离当前为1天的文件, 即距离当前时间1天(24小时-48小时)的文件

下面来看 -mtime 0 的输出结果:
[oracle@goolen arch ]$ find ./* -name "*.arc" -mtime 0 -exec ls -l {} ; 
-rw-r----- 1 Oracle-Installation 39303680 7. Mai 22:00 ./archive_1_77_844522225.arc
-rw-r----- 1 Oracle-Installation 39483392 8. Mai 05:00 ./archive_1_78_8445 22225 .arc
-rw-r----- 1 oracle oinstall 39208448 8. Mai 09:00 ./archive_1_79_844522225.arc

解释:
-mtime 0 表示文件修改时间距离当前为0天的文件,即距离当前时间不到1天(24小时)以内的文件

下面看-mtime -1. 的输出结果:
[oracle@goolen arch]$ find ./* - Name „*.arc“ -mtime -1 -exec ls -l {} ; 
-rw-r----- 1 Oracle-Installation 39303680 7. Mai 22:00 ./archive_1_77_844522225.arc
-rw-r----- 1 Oracle-Installation 39483392 8. Mai 05:00 ./archive_1_78_8445 22225 .arc
-rw-r----- 1 oracle oinstall 39208448 8. Mai 09:00 ./archive_1_79_844522225.arc

解释:
-mtime -1 表示文件修改时间为小于1天的文件,即距离当前时间1天(24小时)之内的文件

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn