in reply to Re: Sort directories by date
in thread Sort directories by date
Unfortunately, you have your month and day fields transposed as the third date in the list shows that the format is MMDDYYYY, there not being a month 20 in the year!
If there are many directories to sort there might be some benefit in using a more advanced sorting approach rather than repeatedly substr'inging the same fields as each date is compared with others in turn. I have used unpack as an alternative to substr in the following code. A Schwartzian transform:-
$ perl -Mstrict -Mwarnings -E ' my @dates = qw{ 12112014 01052015 02202015 03102015 01012011 04092015 09092015 }; say for map { $_->[ 0 ] } sort { $a->[ 3 ] <=> $b->[ 3 ] || $a->[ 1 ] <=> $b->[ 1 ] || $a->[ 2 ] <=> $b->[ 2 ] } map { [ $_, unpack q{a2a2a4}, $_ ] } @dates;' 01012011 12112014 01052015 02202015 03102015 04092015 09092015 $
Guttman Rosler transform:-
$ perl -Mstrict -Mwarnings -E ' my @dates = qw{ 12112014 01052015 02202015 03102015 01012011 04092015 09092015 }; say for map { substr $_, 8 } sort map { join q{}, ( unpack q{a2a2a4}, $_ )[ 2, 0, 1 ], $_ } @dates;' 01012011 12112014 01052015 02202015 03102015 04092015 09092015 $
I hope this is of interest.
Cheers,
JohnGG
|
|---|