理系学生日記

おまえはいつまで学生気分なのか

findコマンドにおける -newer オプション

みんな大好き find コマンド、-newer オプションというのをはじめて知った。find コマンド、マニュアルを読む度に発見ある。 -newer オプションはファイル名を引数に取って、そのファイルよりも modification time が新しいと true を返す述語になってる。 たとえば、以下のようなバックアップスクリプトを書けば、雑なバックアップが実現できることになる。

$ find /path -newer /var/backup/backup.timestamp -exec some-backup-command {} \;
$ touch /var/backup/backup.timestamp

find コマンド、ファイルの時刻に関する述語が多いんだけど、時間の粒度が大きくて不便だから、そういうときに使うと良いのかなと思ってた。 というのも、ファイルの変更時刻とかは touch コマンドの -t オプションを使えば秒(場合によってはもっと粒度細かく)単位で設定できるので、この -newer オプションがあれば秒単位でのファイル/ディレクトリ抽出が可能になります。

わー便利、とか思ってたら、man だと -newerXY とかいう項目があって、別にファイルの変更日時基準ではなくて、i-node の作成時刻だとか、アクセス時刻基準とかでも柔軟に制御ができるようになってた。(-newerXYXY を特定の文字にすることで、これらを変更できる)。 さらに、Yt とすると、ファイルの属性から時刻を取得するのではなくて、直接時刻を記述できるようになってた。

$ find ./* -newermt '20170101 01:01'

いつのまにできるようになったんだろう。世の中、いろいろと変化してる。もはや自分は老害と化しているのではないか。