macOS

Macのファイル属性「最後に開いた日」を変更する

はじめに

まず最初に断っておくと、「最後に開いた日」だけをコマンドから編集することはできないようです。 ここでは、その属性を編集することではなく Finder 上で表示される最後に開いた日 を任意のものに変更することをゴールとします。

「最後に開いた日」の詳細

Mac の Finder に表示される「最後に開いた日」は、以下の 2 つの情報を状況に応じて出し分けているように見えます。

  1. 直接/間接的に Finder 経由でファイルを開いたときに埋め込まれる Spotlight 属性 kMDItemLastUsedDate
  2. 上記が存在しないときは、ファイルの変更日

Spotlight 属性 kMDItemLastUsedDate は、以下のコマンドで調べることができます。

$ mdls sample.txt

xattr コマンドを使って kMDItemLastUsedDate の直接編集を試してみましたが、うまくいきませんでした。 適当な値で上書きしてから更に空文字で上書きすると属性そのものが消えたりしました。詳しいことはわかりません。

$ xattr -w com.apple.metadata:kMDItemLastUsedDate '' sample.txt

「最後に開いた日」= Access Time ではない?

「最後に開いた日」と “Access / atime” のような日付情報を結びつけがちですが、 どうやらそれとこれとは別のようです。 とは言え、ふつうに使っていたら同時に更新されるため、一致するでしょう。

安易に「ファイル属性のアクセスタイムが最後に開いた日」という理解をしてしまうと、 期待した結果とならない場合があるので注意です。

「最後に開いた日」を任意の日付に設定する

上記の挙動を踏まえると、以下のようにすれば任意の日付にできます。 要するに、開いた情報を消して変更日を書き換えて実現しています。

ただし、このやり方だと「変更日」と「最後に開いた日」が必ず同じものとなります。

「変更日」と「最後に開いた日」をそれぞれ任意の日付に設定する

無理やりですが実現できました。システム日付を変えてファイルを開いて戻って来ればいいのです。秒・ミリ秒レベルの調整は難しいでしょう。

cf.