find で、ある日時より新しいファイルを探す、古いファイルを探す

unix 系 OS には find というファイル検索のとても便利なツールがある。

便利なんだから日付を指定して検索くらいできるだろう、と思ったのだけど、オプション一覧を見ていても、○月×日よりも新しいファイルを探す、古いファイルを探す、といった指定方法が見つからない。

-newer がそれっぽいので、こいつを使う。

 

find で指定日付より新しいファイルを探す

 

-newer は、指定したファイルの日付より新しいファイルを探すときに使う。すなわち特定の日付のファイルを用意し、そいつを基準にすれば良い。

 

$ touch -t 10051300 /tmp/date1 
$ find /home -newer /tmp/date1

 

例えば、touch コマンドで /tmp/date1 ファイルを作り、10月05日13時00分 の日時を与える。

find-newer でこのファイルを指定することにより、10月05日13時00分 より新しいファイルを検索できる。

 

find で指定日付より古いファイルを探す

 

じゃあ次に古いファイルの検索だ。 -newer があるのだから -older があるだろう…と思ったけど残念。そういうのは無かった。

find では否定の指定ができるのでこいつを組み合わせて使えば良い。

 

$ touch -t 10051300 /tmp/date1 
$ find /home ! -newer /tmp/date1

 

-newer の前に ! を置いたのだけど、これで -newer 条件の否定の意味になるので、古いファイルを取り出すことができる。

 

find で指定日付間のファイルを探す

 

find のオプションは続けて記述すれば and 条件になる。というわけで、新しいものと古いものを同時に指定すればその間のファイルを検索することができる。

例えば3月1日から4月30日までの間のファイルを探す場合はこんな感じ。

 

$ touch -t 03010000 /tmp/date1 
$ touch -t 04300000 /tmp/date2
$ find /home -newer /tmp/date1 ! -newer /tmp/date2