Macのmdfindを活用する
Macでファイルにタグを付けるでも書いたが、Macのファイルにはいろいろメタデータが付いていて、それを使って高速に検索できる。これはGUIのSpotlightで使われているが、コマンドでもできる。
まず、ファイルのメタデータを表示するコマンド:
mdls filename
2019年6月16日の写真(必ずしも写真ライブラリに入っていない)を検索したいというのが目的。とりあえず写真という条件は省いて、Linuxなら
find / -type f -newermt 2019-06-16 ! -newermt 2019-06-17
でできる。ただし、ファイルシステム全体を検索するのは時間がかかる。
mdfindを使うなら
mdfind 'kMDItemFSCreationDate < $time.iso(2019-06-17) && kMDItemFSCreationDate >= $time.iso(2019-06-16)'
でできる。こっちのほうが高速である。ただし、時間はUTCになるので、少し過去に向かって広めにするほうがよいかもしれない:
mdfind 'kMDItemFSCreationDate < $time.iso(2019-06-17) && kMDItemFSCreationDate > $time.iso(2019-06-15)'
写真(RAWフォーマットの CR2
も含める)だけを表示するには、メタデータの検索式を書くよりも、これらのコマンドの最後に | egrep -i '\.(jpg|jpeg|cr2|heic)$'
を付けるほうが簡単そうだ。
メタデータを編集するには osxmetadata というPythonパッケージ兼コマンドラインツールが便利そうである。pip3 install osxmetadata
でインストールできる。
osxmetadata --get findercomment filename
または
osxmetadata --get kMDItemFinderComment filename
でFinderの「情報を見る」でセットできるコメントがゲットでき、
osxmetadata --set findercomment 'ほげほげ' filename
または
osxmetadata --set kMDItemFinderComment 'ほげほげ' filename
でセットでき、
mdfind "kMDItemFinderComment == '*げほ*'"
で検索できる。
mdlsで表示されるメタデータをすべてユーザが上書きできるわけではない。
メタデータはrsyncで別Macに送れる。そのためのオプションは、Mac付属の /usr/bin/rsync では -E
、本家(Homebrewで入るもの)では -X
である。Homebrewで入る新しいrsyncはzlib圧縮に加えてzstd圧縮などができる(zstdがデフォルト)。
続編としてMacのFinderコメントを活用するも書いた。
参考