bakačeva 3 page
[zc] / rename.pl
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4
5 use POSIX qw(strftime);
6 use Time::Local;
7 use autodie;
8
9 open(my $find, '-|', 'find queue -type f');
10 while(<$find>) {
11         chomp;
12         my @p = split(/\//, $_);
13         my $old = $_;
14         my $new = $old;
15         if ( $#p == 2 ) {
16                 if ( $p[2] =~ m/^(\d+)\.(.+)/ ) {
17                         my ( $t, $rest ) = ( $1, $2 );
18                         my ($date,$time) = split(/ /,strftime("%Y-%m-%d %H:%M:%S", localtime($t)));
19
20                         my $new = "$p[0]/$p[1]/$date";
21                         mkdir $new if ! -d $new;
22                         $new .= "/$time.$t.$rest";
23                         rename($old, $new);
24                 } else {
25                         warn "OK $old\n";
26                 }
27         } elsif ( $#p == 3 && $p[3] =~ m/(\d\d):(\d\d):(\d\d)\.((up|down|sent).+)/ ) {
28                         my ( $h, $m, $s, $rest ) = ( $1, $2, $3, $4 );
29                         my ( $yyyy, $mm, $dd ) = split(/-/,$p[2]);
30                         my $t = timelocal( $s, $m, $h, $dd, $mm, $yyyy );
31                         my $new = "$p[0]/$p[1]/$p[2]/$h:$m:$s.$t.$rest";
32                         rename($old, $new);
33         } else {
34                 warn "OK $old\n";
35         }
36
37 }