6か月以上経過した非管理ファイルを探す

6か月以上経過した非管理ファイルを探す

6ヶ月以上触れていないファイルをすべて見つけようとします。このコマンドを実行しましたが、6か月以内に編集されたすべてのファイルのみが表示されます。

find . -type f -mtime 183 -exec ls -latr {} \;

どうすれば6ヶ月以上持続できますか?

答え1

-mtime 183期間は183に対応する次の24時間期間に丸められ、期間は182 * 24 * 3600秒(除外)から183 * 24 * 3600秒(含む)のファイルに適用されます(ここで秒はUnix秒です)。はISOで定義された固定期間(秒)ではなく可変期間(地球日の86400番目の部分)を持つため、すべての日は86400秒で、うるう秒を考慮する必要はありません。

を使用すると、-mtime +183次の24時間期間に丸められた183よりも厳しい年齢のファイルを取得するため、年齢は厳密に183 * 24 * 3600秒よりも大きくなります。

24時間が必ずしも24時間と一致するわけではありません。一部の地域では、夏時間のため。

一部の実装(FreeBSD、GNU)では、.を使用して修正時間を引数として指定された時間と比較するfindこともできます。! -newermt '6 months ago'mtmt

これにより、6か月前に同じ日付、同じ時間より前に変更されたファイルが提供されますが、GNU find(FreeBSDとは反対)の場合、DST調整(DSTが適用されるタイムゾーンで)を実行しません。 UTCタイムゾーンと同じ情報です。今が2016-07-01 13:00(夏時間)の場合、FreeBSDはfind2016-01-01 13:00(冬時間)以前に最後に変更されたファイルを報告し、GNUはfind2016-01年以前に最後で変更されたファイルを報告します。 01 12 前:00(冬季)。当月29日、30日、31日に電話する場合にも変更がある場合がありますが、6ヶ月前の月にはその日はありません。

答え2

+日付値の前に1を追加します。マニュアルページから:

   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

そして

... When  find  figures  out
how  many  24-hour  periods  ago the file was last accessed, any
fractional part is ignored, so to match -atime +1, a file has to
have been accessed at least two days ago.

これはテストを意味しますが、atimeテストと同じです。mtimectime

関連情報