なにかで障害が起きて、メールスプールから障害時点以降のファイルだけを抽出したい、みたいなことって時々あると思うんです。てかよくありますよね!
そういう時は普通、findを使って抽出すると思いますが、Maildir形式で保存している場合、例えば
/var/mail/exampleuser/Maildir/dovecot.index /var/mail/exampleuser/Maildir/maildirsize /var/mail/exampleuser/Maildir/new/... /var/mail/exampleuser/Maildir/cur/... /var/mail/exampleuser/Maildir/tmp/...
のようなファイルとディレクトリ構成になっているとき、これを単純に
find /var/mail -mtime -5 -type f
とすると、検索したい対象は「Maildir/new/」と「Maildir/cur/」以下だけなのに、dovecot.indexとか、それ以外な不要なファイルが引っかかってくる可能性があります。
なので、検索するディレクトリを「Maildir/new/」と「Maildir/cur/」に絞りたいなと思いましたが、うまいことやる方法が思いつきませんでした。
というようなことをtweetすると、ふみやすさん @satoh_fumiyasuから -path オプションを使う方法を教えてもらいました。
find /var/mail \( -path '*/Maildir/new/*' -o -path '*/Maildir/cur/*' \) -mtime -5 -type f
findの使い方が解説してあるページでも「-path」オプションについて記述してるところ少なくて、とりあえずgnu findtuilsのmanページ
https://linuxjm.osdn.jp/html/GNU_findutils/man1/find.1.html
自分はこのtweet間に合わなくて、結局一旦textに吐いてからgrepで除去してやりました。
メールスプールに対してfind掛けるような行為はとにかくファイル数が多くて、すげえ時間がかかって泣けますね…