みんな大好き 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 の作成時刻だとか、アクセス時刻基準とかでも柔軟に制御ができるようになってた。(-newerXY
の X
と Y
を特定の文字にすることで、これらを変更できる)。
さらに、Y
を t
とすると、ファイルの属性から時刻を取得するのではなくて、直接時刻を記述できるようになってた。
$ find ./* -newermt '20170101 01:01'
いつのまにできるようになったんだろう。世の中、いろいろと変化してる。もはや自分は老害と化しているのではないか。