【Mac】ファイルの作成日と変更日をターミナルで書き換える

通常Finder上でファイルの作成日を書き換えることはできません。

しかし、ターミナルを使えば作成日や変更日を書き換えることができます。

目次

状況

例えば、動画を軽量化するためにエンコードして書き出すと、書き出した日付が「作成日」として設定されます。

その結果、Finder で日付順にソートした際に、本来の撮影日(元ファイルの作成日)順に並ばなくなるという問題が起きます。

このような場合、作成日と更新日を元の日付に書き換える方法が有効です。

ターミナルでの書き換えの基本

ターミナルで、SetFileを使って作成日と更新日を書き換える基本コマンドです。

# 作成日を変更する
SetFile -d "01/17/2025 12:34:56" example.mp4

# 更新日を変更する
SetFile -m "01/17/2025 12:34:56" example.mp4
  • -dオプション :作成日を変更
  • -mオプション:更新日を変更
  • mm/dd/yyyy 形式:日付を変更(時間は省略可)

ファイルはドラッグ&ドロップなどで、ファイルまでのパスを渡します。

最初に作成日の変更を実行した後、上矢印キーで履歴を表示させて、-mに書き換えて更新日の変更を実行するのが効率的かと思います。

応用:関数を使って書き換える

手打ちで日付を入力しても良いのですが、「元のファイル」の日付情報を「書き出し後のファイル」にコピーする方が、確実かつ高速なため、ここではその方法を採用します。

用意するもの

  • 元のファイル
  • 書き出し後のファイル

①関数を記述

書き換え作業を楽にするために、まずは以下の関数をコピペしてEnter。(関数はターミナルを閉じるまで有効)

copydate() {
  SetFile -d "$(GetFileInfo -d "$1")" "$2" && \
  touch -m -r "$1" "$2"
}

②書き換える

次にcopydateを入力し、スペースを開けて「元のファイル」、「書き出し後のファイル」の順でドラッグ&ドロップします。

copydate /Users/name/Desktop/元のファイル.mov /Users/name/Desktop/書き出し後のファイル.mp4

Enterで実行すると作成日、更新日が書き変わります。

複数ファイルがある場合は、copydateを繰り返します。

作成日だけの変更では不十分な理由

作成日だけを書き換えると、Finderが変更日を「作成日」として表示する挙動が確認できました。

実際に確認できた挙動

  1. 動画を書き出し→2026年1月17日
  2. 作成日を書き換え→2020年1月3日
  3. Eagleアプリにファイルを移動→2020年1月3日(この時点では正しい)
  4. Eagleアプリからファイルをデスクトップに移動→2026年1月17日(作成日の表示が変わる)

ファイルをstatで確認してみます。

"Jan 17 17:40:53 2026" ← atime(最終アクセス)
"Jan 17 17:35:49 2026" ← mtime(変更日)★ 書き出し日
"Jan 18 18:44:35 2026" ← ctime(属性変更日)
"Jan  3 16:19:03 2020" ← birthtime(作成日)★

作成日は正しく書き変わっているにも関わらず、なぜかFinder上では作成日が「2026年1月17日」になっていました。

変更日も合わせる方が無難

調べてみるとmacOSでは、アプリや操作方法によってはFinderが表示・ソートに使用する日付として「変更日」が使われる場合があるようです。

Eagleのようなファイル管理アプリを経由してコピーやドラッグ&ドロップを行うと、この挙動が表に出ることがあるため、作成日だけでなく変更日も合わせて書き換えておく方が安全かもしれません。

まとめ

書き換えのためのアプリもあるようですが、頻繁に使うことがないならターミナルで実行したほうが早いですね。

できればFinder上で書き換え可能になって欲しいものです。

カスタマイズに困ったらお気軽にご相談を!

  • 「ちょっとしたCSSの調整だけお願いしたい」
  • 「不具合を直してほしい」

料金は3,000円〜、お支払いは銀行振込・Amazonギフトカードなど柔軟に対応してます🤔

役に立ったら他の方にシェア

お気軽にコメントどうぞ

コメントする

目次