個人的なメモを記していくためのページです。
何かの処理たとえば 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で動作確認した。けど空白を含むファイル名とかあったらしらない。