ファイルの日付変更めんどい

写真を整理してたら、ちょくちょく日付のおかしいのがある。

今年の頭に携帯をandroidに変えてから、ファイルの転送がお手軽になったんで、macの写真appをやめて、コピペで移すようにした。したら、ファイルの作成日がコピーした日付になる。macOSはAndroidを直接マウントしよらんので「Android File Transfer」っつうツールでコピペしてるからなあ。ほんまmacはどこまでもセルフのじゃまする仕様やなあ。まあWindowsでやりゃあいいんやが。っていうかWinノートに早よせえよっていうな。

そしてこれがもう2、3回目の事と思い出す。過去毎回、ファイルの登録日時の変更を調べては、調べきらずにめんどくさいと途中で違う方向に行ったまま放置してきてた。よし!と腹を決めて今回でケリを付けてやる、と、いつものごとくググる。

しかしググったところで近年結論に突き当たりにくくなってるから過去2、3回も放置することになる。コマンドはLinux関連のそれとごっちゃになってるし、ユーティリティも説明に言及が無く悉く試すしかない。が、既にmacOS Catalinaは64bit appしか使えないんで結局軒並みアウツ。

ちなみに、ファイルの更新日はtouchコマンドで変更可能なのはもう把握済みで常用している。しかしtouchコマンドでは修正日時とアクセス日時しか変えられない。そしてそもそもがUnixにはファイル情報として登録日時が無い(というか修正日時が修正しなければ登録日時)。macOSの場合、apfs、hfs+でファイル情報が拡張されていて、登録情報始め諸情報が記録されている。macOS用に拡張された情報はmdlsコマンドで参照でき、-nameオプションで表示情報を制限できる。まあこの辺がややこしい元凶やな。

結局、macOS固有のsetfileコマンド(Xcode Command Line Toolsのインストールが必要。Xcode入れてたら入れられてる)で、-dオプションを付けると登録日時、-mオプションで修正日時が変更できる。以前にも見つけてたが、日付しか指定できないと説明があって、あかんがなと思ってたが、時間も付けれたんやな。

$ setfile -d “[mm]/[dd]/[yyyy] [HH]:[MM][SS]” [file]

対象ファイルが数百あるんで、修正日時から登録日時を変更するバッチでも作りたい所やが、バッチの書き方ももう忘れてるし調べるのもめんどい(日付フォーマットとかもうあかん)。なんでファイルリストコピってコマンドリストを作ってやろう。ファイルリストの取得がlsやと秒と年が入らんけど、登録日時の変更を調べてる時に、lsに-Tオプションを付けることで取得できる事が分かった(これも前に調べた時に知ってたが、-tと小文字表記で紹介されてて、「あかんがな」と思ってたら大文字やった)。

で、ターミナルでls -lTしたリストをコピペしてエディタでスペースをタブに置き換えてスプレッドシートにコピペでセル連結でコマンド作ってターミナルにまとめてコピペで終了。

mdlsとsetfileの組み合わせで登録、修正、アクセスのファイル日時を自在に設定できるバッチかツール作るというタスクをやることリストに入れておく(そして放置される)。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA