ファイルやディレクトリの最終更新日時(mtime
)と最終アクセス日時(atime
)は簡単に変更ができる。
最終属性変更日時(ctime
)だけはその性質上、変更はできない。
最終更新日時や最終アクセス日時の変更にはtouch
コマンドを用いる。
ここでは、主にtouch
コマンドを使用した最終更新日時と最終アクセス日時の操作に関してを扱う。
$ touch ([オプション...]) [対象ファイルもしくはディレクトリ...]
対象ファイルが存在しない場合、指定されたパス名の空(ファイルサイズが0)のファイルを作成するのだが、空ファイルを作成する用途で役に立つことがある。
-m
(最終更新日時)オプション-a
(最終アクセス日時)オプションの内、片方だけが指定された場合に限り、そのタイムスタンプだけが変更される。
両方が指定された場合にもされなかった場合にも、両方のタイムスタンプ情報が変更される。
日時を指定するために使われる-t
や-r
といったオプションを付けない場合、現在の日時に変更される。
-t
オプションで日時を指定することで、タイムスタンプを任意の日時に変更できる。
$ touch -t [タイムスタンプ文字列] ([オプション...]) [対象ファイルもしくはディレクトリ...]
タイムスタンプ文字列は “YYYYMMDDhhmm.ss” 形式1または現在の年を前提とした “MMDDhhmm.ss” 形式2で、“2008年7月21日 19時45分45秒"の場合は200807211945.45
となり、現在の年の “8月16日 7時14分22秒” の場合は08160714.22
となる。
秒だけドットの後ろになる点に注意。
設定されたタイムスタンプ情報を確認するにはstat
コマンドが便利。
下は200805311234.56
を指定した対象に対して最終更新日時を確認している例。
$ stat [対象ファイルもしくはディレクトリ] | grep Modify
Modify: 2008-05-31 12:34:56.000000000 +0900
-r
オプションを用いると、ファイルやディレクトリのタイムスタンプ情報のみを別のファイルやディレクトリにコピーすることができる。
$ touch -r [元ファイルもしくはディレクトリ] [対象ファイルもしくはディレクトリ...]
データ本体はコピーされない。
ファイルをコピーするcp
コマンドは、通常はタイムスタンプ情報をコピー先に複製することはない。
ただし、オプション指定によってはタイムスタンプ情報を保持してファイルやディレクトリをコピーすることができる。
$ cp -p [元ファイル] [コピー後のファイル名]
$ cp -a [元ファイルもしくはディレクトリ] [コピー後のファイル/ディレクトリ名]
-p
オプションでコピーされる情報の中にはタイムスタンプ情報も含まれ、-a
オプションは-d
3と-R
4と--preserve=all
5の全てを指定したものと等価となる。
関連記事
関連URL