365日以上アクセスしなかったファイルを繰り返し見つけようとします。 statを使用して、365日以上ファイルにアクセスしていないことを確認できます。奇妙なことに、ファイルは約6ヶ月前に変更されたとマークされていますが、統計によると、最後のアクセスは1年を超えていました。
その後、findコマンドを使用して1年以上アクセスしていないファイルを検索してみましたが、確認したファイルはリストにありません。
skunkbad:/var/www/htdocs/newera$ stat ./index.html
File: './index.html'
Size: 31 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 3279283 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/skunkbad) Gid: ( 1001/ webdevs)
Access: 2018-01-08 16:22:58.271143975 -0800
Modify: 2017-09-21 14:01:36.950307771 -0700
Change: 2018-06-04 09:00:36.801632639 -0700
Birth: -
skunkbad:/var/www/htdocs/newera$ find . -atime +365 -type f -print
skunkbad:/var/www/htdocs/newera$
それでは、この場合、index.htmlファイルのリストが見つからないのはなぜですか? 365日以上アクセスしていないファイルを再帰的に見つける方法は?
このファイルに関連するコマンドを実行する予定なので、質問することです。しかし、それがうまくいくかどうかを知る必要があります。 90日の例:
find -type f -atime +90 -exec touch -a {} +
答え1
これマニュアルfind
-atime
-ctime
テストの時間計算方法について説明します-mtime
。
-atime n
ファイルはn * 24時間前に最後にアクセスされました。 findがファイルに最後にアクセスした24時間前を計算するとき、すべての小数部は無視されるため、一致するには
-atime +1
ファイルに少なくとも2日前にアクセスする必要があります。
2番目の部分は数値パラメータを指定する方法です。
数値パラメータは次のように指定できます。
+nはnより大きい。
-n は n より小さい。
nは正確にnである。
-atime +365
したがって、を指定すると、find
365日以上前にアクセスしたファイルが検索されます。計算は分数を考慮しないため、これはファイルが少なくとも366日前にアクセスされた場合にのみ一致することを意味します(日、カレンダー日ではなく366 * 24時間)。
したがって、あなたの場合、find . -atime +365
表示されたファイルはアクセス日から366 * 24時間後にのみ一致します。この条件は2019-01-09 16:22:58以降にtrueになります。