どうも、シェル=ゲイニンです。 社内のissueコメントに、 1秒前のmtimeを持つファイルを作るのはシェルじゃ無理と書かれていたので カッとなって即レスした。反省してない。 その内容をこっちにも転記。
touch -d
$ date; touch -d "1 second ago" hoge; stat hoge 2014年 8月 9日 土曜日 19:06:43 JST File: `hoge' Size: 0 Blocks: 0 IO Block: 4096 通常の空ファイル Device: fc00h/64512d Inode: 2634263 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ buty) Gid: ( 0/ root) Access: 2014-08-09 19:06:42.731358344 +0900 Modify: 2014-08-09 19:06:42.731358344 +0900 Change: 2014-08-09 19:06:43.729271927 +0900 Birth: -
touch
の-d
オプションに1 second ago
を指定すればできる。
もちろん、10秒前だったり、1ヶ月前だったりも同様にできる。
ちなみに、date
コマンドの-d
オプションも同じ動作する。
応用: あるファイルのmtimeより1秒前のmtimeを持つファイルを作る
touch
は-r
オプションで指定したファイルのタイムスタンプを参照することができる。
これを-d
と組み合わせれば
$ stat hoge File: `hoge' Size: 0 Blocks: 0 IO Block: 4096 通常の空ファイル Device: fc00h/64512d Inode: 2634263 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ buty) Gid: ( 0/ root) Access: 2014-08-09 19:06:42.731358344 +0900 Modify: 2014-08-09 19:06:42.731358344 +0900 Change: 2014-08-09 19:06:43.729271927 +0900 Birth: - $ touch -r hoge -d "1 second ago" fuga $ stat fuga File: `fuga' Size: 0 Blocks: 0 IO Block: 4096 通常の空ファイル Device: fc00h/64512d Inode: 2634266 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/ buty) Gid: ( 0/ root) Access: 2014-08-09 19:06:41.731358344 +0900 Modify: 2014-08-09 19:06:41.731358344 +0900 Change: 2014-08-09 19:10:20.585271927 +0900 Birth: -