我的文件排序如下,但是没有按日期排序。
1(1).jpg
1(2).jpg
1(3).jpg
1(4).jpg
.
.
.
我想对它们进行排序
执行以下操作后:
perl -e '$prefix="aaaa";map{rename "$_",$prefix++.".$1" if /.*\.(.*)/} <*>'
我得到以下信息:
file 1 (1).jpg -> aaaa.jpg
file 1 (10).jpg -> aaab.jpg
file 1 (100).jpg -> aaac.jpg
file 1 (101).jpg -> aaad.jpg
我希望它像:
1(1).jpg -> aaaa.jpg
1(2).jpg -> aaab.jpg
1(3).jpg -> aaac.jpg
1(4).jpg -> aaad.jpg
我想这是因为它考虑了数字排序而不是字母排序。
有人可以帮我吗?
答案 0 :(得分:1)
这是一种将文件按数字排序到数组@sorted_files
中的方法:
use feature qw(say);
use strict;
use warnings;
my @files = qw[ file(1).jpg file(2).jpg file(10).jpg];
my @sorted_files = map { $_->[1] } sort { $a->[0] <=> $b->[0] } map {
my ($search_key) = $_ =~ /\((.*)\).jpg/;
[$search_key, $_]
} @files;
say for @sorted_files;
输出:
file(1).jpg
file(2).jpg
file(10).jpg
现在,您可以应用例程来进一步转换它们。