macOS Sierra の Mail に重複したメッセージを表示する

OS X 10.9 (Mavericks) で効いた方法が 10.11 (El Capitan) や 10.12 (macOS Sierra) では効かないので改めて探すと、オプション指定が変わってました。

defaults write com.apple.mail _AlwaysShowDuplicates -bool true

隠しオプションはアンダースコアで始めるって規則なのかしらん。

ところで重複したメッセージがあるのは判ったので、消したいんですけど数千あります。まとめて消せる時間のかからない方法、ありませんかねぇ……

SetFile コマンドの代わり

更新日を読んで作成日へ入れる」で SetFile コマンドを使ったけど、あれは Developer Tools がないときは使えません。そこで代わりに touch コマンドを使うときはパラメーターの指定方法が変わります。

SetFile -d "mm/dd/yyyy HH:MM" ファイル名
touch -t yyyymmddHHMM ファイル名

更新日を読んで作成日へ入れる

Facebook へアップロードされた写真を オプション > ダウンドードでファイル化すると、当然だけどダウンロードした時刻が作成日へ入ります。これを OS X の写真アプリへ取り込むと、作成日もそのまま取り込まれるので、日付で並べ替えたとき変な順序になってしまいます。

そこで調べてみたところ、Facebook へアップロードされた時刻(と思われる)がファイルの更新日に入っていました。だったら更新日を読んで作成日へ入れてから写真アプリへ取り込めばいいよね。そういうわけで OS X の awk と sh を使ってこんな風に解決できました。

awk:

{
    mm = $6
    dd = $7
    tt = $8
    ff = $9
    newdate = sprintf( "\"%02d/%02d/2016 %s\"", mm, dd, tt )
    print "SetFile -d", newdate, ff
}

sh で実行:

ls -l 写真ファイル | awk -f awkのスクリプト | sh

参考 man ページ: SetFile(1) awk(1)