Конвертировать файлы из отсортированных по алфавиту в алфавитный - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть файлы, отсортированные следующим образом, но они не отсортированы по дате.

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

Я думаю, это потому, что он учитывает числовую сортировкуа не сортировка по алфавиту.

Кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 02 декабря 2018

Вот подход, позволяющий отсортировать файлы в числовом виде в массиве @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

Теперь вы можете применитьВаша рутина, чтобы преобразовать их дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...