find -mtime に指定する値の考え方
find -mtime でファイルを探すとき、
「3日前のファイル」をリストしようとして
$ find . -mitme 3
と打ったら4日前の日付のファイルが出てきて、理由がわからず悩む
とか、
「3日以上前のファイル」をリストしようとして
$ find . -mitme +3
と打ってみたが、3日前の日付のファイルは1本も出てこなくて困る
ということがよくある。何回使っても挙動が覚えられないので整理してみる。
-mtimeの考え方
次の 1,2,3 の指定でリストされるファイルには重なりがない。それぞれまったく別のファイルがリストされる。
- find . -mtime -3
- find . -mtime 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を指定する。