find -mtime に指定する値の考え方


find -mtime でファイルを探すとき、


「3日前のファイル」をリストしようとして

$ find . -mitme 3

と打ったら4日前の日付のファイルが出てきて、理由がわからず悩む


とか、


「3日以上前のファイル」をリストしようとして

$ find . -mitme +3

と打ってみたが、3日前の日付のファイルは1本も出てこなくて困る


ということがよくある。何回使っても挙動が覚えられないので整理してみる。

-mtimeの考え方

次の 1,2,3 の指定でリストされるファイルには重なりがない。それぞれまったく別のファイルがリストされる。

  1. find . -mtime -3
  2. find . -mtime 3
  3. find . -mtime +3


findは-n, n, +nで探索対象の時間をずらしているが、そのずらし方が私の直感に合わないので覚えにくい。
nを起点として、それより新しいものをリストするのが-n。それより古いものをリストするのがnと+n。+nはnでリストされるものよりも古いファイルをリストする。
ほんとは絵を描いたほうがわかりやすいのだが、各オプションの意味を言葉で表現するとこうなる。

-mtime -n		n*24時間前よりも後で更新されたファイル	
-mtime n		n*24時間前から、さらに過去24時間以内に更新されたファイル
-mtime +n		(n+1)*24時間前よりも、以前に更新されたファイル

例えば、私が直感的に考える「3日以上前のファイル」を探したいときは、+3ではなく +2を指定する。