ファイルの日付スタンプを変更する—2-‘SetFile’

その後、‘touch’で色々と試しましたが、‘touch’コマンドの仕様として、<http://d.hatena.ne.jp/zariganitosh/20101210/falsify_file_info>で指摘されているように、

  • 指定した日時が作成日時よりも古ければ、作成日時・更新日時・アクセス日時を更新する
  • 指定した日時が作成日時よりも新しければ、作成日時はそのまま。更新日時・アクセス日時のみ更新する
  • たとえ-aや-mを指定しても、作成日時より古い日時であると、作成日時も更新する

といったものとなります。
つまり、作成日時を既定値よりも新しくすることは出来ないということです。また、‘-m’オプションで更新日時のみを既定値よりも古くすることは出来ない訳で、いってみればオプションを使う意味はあまりないという結論になります。
う〜ん、残念な(とは言え、本来はこれが普通なのでしょう)結論です。

結局、Xcode.appをインストールして‘SetFile’コマンドが使えるようにしました。
マニュアルがAppleのサイトにあります。
<https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/SetFile.1.html>
どうやら、‘SetFile’コマンドはファイル属性を扱うコマンドのようで、不可視属性やタイプ&クリエータまで書き換えられるようです。

$ SetFile -d 01/01/2013 00:00 file

で、作成日時が変更できます。日時の書式は、mm/dd/[yy]yy [hh:mm[:ss]です。
更新日時はmオプションで、

$ SetFile -m 01/01/2013 00:00 file

なんと、作成日時が更新日時よりも新しいなどという矛盾した設定も可能です。

■AppleScriptでアプリケーション化
AppleScriptでアプリケーションを書いてみました。

03582

Re-set Datestamp.appです。内容は、上記の‘SetFile’コマンドに作成日時、更新日時の選択を行うダイアログを表示する他には、日付フォーマットの整形を‘date’コマンドでやっているだけです。
Re-set Datestamp.appは編集可能な形式のアプリケーションです。改変/加工は自由に行って下さい。

■使い方
スクリプトメニュー内に置いて下さい。
処理対象をFinder上で選択してから、スクリプトメニュー内のRe-set Datestamp.appを起動して下さい。
次のダイアログで、日時と、作成日時あるいは更新日時の指定をすればOKです。

■ダウンロード
http://amstudio.sytes.net/amweb/Re-set_Datestamp.iso.zip
※Re-set Datestamp.appの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

■保証
動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負い ません。使用は御自身の責任において行なってください。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中