個人的なメモを記していくためのページです。
thinkpad X61T SXGA+ モデルがthinkvantage club会員価格で20万をきってます。
何かの処理たとえば mp3ファイルのタグを書き換えたりとかjpgの縦横を変えたりとかしたときにタイムスタンプを元のままにしたいときがある。そういう時のためにあらかじめタイムスタンプを記録しておいて、何がしかの処理が済んだ後でタイムスタンプを元に戻すperlスクリプト。エラーチェックはなし。
#! /usr/local/bin/perl if( $ARGV[0] eq "-w" ){ shift; $now = time; while(<>){ ($m, $filename) = split(); print "$m $now $filename "; $ret = utime $now, $m, $filename; print "$ret\n"; } } else{ while( @ARGV ){ $filename = $ARGV[0]; @st = stat( $filename ); if( @st ){ $m = @st[9]; print "$m $filename\n"; } shift; } }
あらかじめ
$ perl foo.pl *.mp3 > bar
のようにしてタイムスタンプ情報を保存しておく。処理が済んだ後にファイルbarの情報を元に戻す。
$ perl foo.pl -w < bar
windowsで動作確認した。けど空白を含むファイル名とかあったらしらない。
unix シェル上での別のやり方。スクリプト要らず。
$ mkdir ../timestamps/; for i in *.mp3; do touch -r $i ../timestamps/$i;done
として どこか(ここでは../timestamps)に元のファイルのタイムスタンプを持つ一時ファイルを作っておく。タイムスタンプを戻すときは
$ for i in *.mp3; do touch -r ../timestamps/$i $i; done
で戻る。