現在のコンピュータシステムでは、情報を取り扱うために「ファイル」と呼ばれる管理方法を使っています。
ファイルとは、データの入れ物のことで、その「入れ物」に対し、「ファイル名」「更新日時」などの付加情報を付けることで、データにアクセスしやすく工夫されているものです。
さて、「ファイルを更新する」といいますが、実際には「ファイルの中身のデータ」を更新するのであって、その際、「更新日時」を新しくするというルールがあるため、ファイルの付加情報としての「更新日時」も新しくなる、という理屈になっております。
このファイルの更新日時、戻したくなったことってありませんか?
今回は、Linuxのbashにおいて、「特定のディレクトリにまとめておいたファイルに合わせて、更新したファイルの更新日時を元に戻す」というのをやってみます。
コード
- 日付が古いファイルが入っているディレクトリを「orig/」
- 日付が新しいファイルが入っているディレクトリを「target/」
をしたとき、
$ cd target $ for FILE in *; do touch -r "../orig/${FILE}" "${FILE}" ; done
で、target/ に存在するファイルと同じ名前のorig/にあるファイル名の更新時刻にそろえることができます。
解説
MacのFinderで見ると一目瞭然なのですがちょっと今ないのでLinuxの画面にてご説明
こんな感じで、ファイルの日付を元に戻すことができます。
いつ使うの?
昔は、デザインソフトが日付を感知して更新を検知していたので、ファイルの日付をいじる必要性はありましたが、いまだとあんまりいじらないでしょうか。
でも、touchコマンドでは、今回使用したほかのファイルの日付に合わせる -r オプションのほかにも、指定した日付にする -d オプションもありますし、オプション無しで指定すると現在時刻に設定されるなど、様々な使い方ができますので、ぜひ使ってみてください。
Windowsだと、2016年8月2日以降のAnniversary update適用後、使えるようになりますよ。