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