web-dev-qa-db-ja.com

-atimeによるfind(ing)が予期されたファイルを出力しないのはなぜですか?

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ファイルがfindによってリストされないのですか? 365日以上アクセスされていないファイルを再帰的に見つけるにはどうすればよいですか?

これらのファイルにアクセスするコマンドを発行するつもりなので質問していますが、それが機能することを知っておく必要があります。 90日間の例:

find -type f -atime +90 -exec touch -a {} +
2
Brian Gottier

findのマニュアル は、-atime-ctime、および-mtimeテストの時間計算がどのように機能するかを説明しています。

-atime n

ファイルが最後にアクセスされたのはn * 24時間前です。ファイルが最後にアクセスされた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-0916:22:58以降に真になります。

2
Haxiel