Linuxでタイムスタンプをコピーする方法
タグ: linux / 初版公開: 2013-07-19

Linuxでファイルをコピーした際に、単純にcp -Rなどとしてしまい、-pを指定し忘れるとタイムスタンプがすべて更新されて悲しいことになる。

幸い元のファイルが残っていれば対処法はあり、以下のようにtouchコマンドの-rオプションでSRCのタイムスタンプを、DSTに反映することができる。いわばタイムスタンプのコピーと言える。

touch -r SRC DST

ただ、これだと単一のファイルにしか対応できない。こういう事に悩むのは、大抵ディレクトリをコピーした場合だろう。ちょっと煩雑だが、ディレクトリの場合はxargsを組み合わせて以下のようにすると良いと思う。

cd SRC;find . -name "*" -print0|xargs -0 -i touch -r {} /DST/{}

もっとスマートな方法があるようなら知りたい。