ファイルのタイムスタンプを信じて、ファイル名を "年-月-日-時-分-秒.拡張子" という形式に変換する簡単なツールです。 デジカメの写真整理などに御利用下さい。 「無償・無保証・著作権放棄」 です。
% file2date /mnt/pcc/dcim/100k3800/* /mnt/pcc/dcim/100k3800/dcp_0001.jpg --> 2001-06-23-20-05-32.jpg /mnt/pcc/dcim/100k3800/dcp_0002.jpg --> 2001-06-23-20-13-40.jpg /mnt/pcc/dcim/100k3800/dcp_0003.jpg --> 2001-06-23-20-15-48.jpg
#! /usr/bin/env perl ### NO WARRANTY, NO COPYRIGHT! ### # convert file name "dir/dir/foo.ext" to "year-month-day-hour-min-sec.ext" # Usage: prog file [file ...] # Ex: dcp_0003.jpg --> 2001-06-23-20-05-32.jpg # Ex: /home/yto/e-01.txt --> 2001-06-12-14-32-10.txt use strict; use POSIX qw(strftime); use File::Copy; use File::Basename; foreach my $fn (@ARGV) { my ($base, $dir, $ext) = fileparse($fn, '\..*'); my $date = strftime "%Y-%m-%d-%H-%M-%S", localtime((stat $fn)[9]); print "$fn --> $date$ext\n"; copy($fn, $date.$ext); utime((stat $fn)[8, 9], $date.$ext); # set timestamps }
#! /usr/bin/perl ### NO WARRANTY, NO COPYRIGHT! ### # convert file name "dir/dir/foo.suf" to "year-month-day-hour-min-sec.suf" # Usage: prog file [file ...] # Ex: dcp_0003.jpg --> 2001-06-23-20-05-32.jpg # Ex: /home/yto/e-01.txt --> 2001-06-12-14-32-10.txt foreach my $fn (@ARGV) { my ($suf) = ($fn =~ /(\.[^\.]+)$/); my ($sec, $mi, $h, $dm, $mo, $y) = localtime((stat $fn)[9]); $DATE = sprintf("%4s-%02s-%02s-%02s-%02s-%02s", $y + 1900, $mo + 1, $dm, $h, $mi, $sec); print "$fn --> $DATE$suf\n"; `cp $fn $DATE$suf`; }