【Mac】ファイルの作成日と変更日をターミナルで書き換える
通常Finder上でファイルの作成日を書き換えることはできません。
しかし、ターミナルを使えば作成日や変更日を書き換えることができます。
状況
例えば、動画を軽量化するためにエンコードして書き出すと、書き出した日付が「作成日」として設定されます。
その結果、Finder で日付順にソートした際に、本来の撮影日(元ファイルの作成日)順に並ばなくなるという問題が起きます。
このような場合、作成日と更新日を元の日付に書き換える方法が有効です。
ターミナルで書き換える
手打ちで日付を入力しても良いのですが、元ファイルの日付情報を別ファイルにコピーする方が、確実かつ高速なため、ここではその方法を採用します。
書き換え作業を楽にするために、まずは以下の関数をコピペしてEnter。(関数はターミナルを閉じるまで有効)
copydate() {
SetFile -d "$(GetFileInfo -d "$1")" "$2" && \
touch -m -r "$1" "$2"
}次にcopydateを入力し、「元ファイル」、「書き換えるファイル」の順でドラッグ&ドロップします。
copydate /Users/name/Desktop/元の動画.mov /Users/name/Desktop/動画.mp4Enterで実行すると作成日、更新日が書き変わります。
複数ファイルがある場合は、copydateを繰り返します。
ファイル名を直接入力してもOK
コマンドに詳しい方は、cdでディレクトリ移動して、ファイル名を直接入力しても構いません。
copydate "元の動画.mov" "動画.mp4"作成日だけの変更では不十分な理由
作成日だけを書き換えると、Finderが変更日を「作成日」として表示する挙動が確認できました。
実際に確認できた挙動
- 動画を書き出し→2026年1月17日
- 作成日を書き換え→2020年1月3日
- Eagleアプリにファイルを移動→2020年1月3日(作成日はそのまま)
- 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ギフトカードなど柔軟に対応してます🤔
お気軽にコメントどうぞ