У меня есть несколько файлов, названных по дате, и я пытаюсь внести пакетное изменение в именовании
они похожи на это:
dd-mm-yyyy or dd.mm.yyyy or ddjanyyyy
и я пытаюсь стандартизировать всех как это:
yyyy-mm-dd-file-name-default
Если действительно только необходимо "скорректировать символьный порядок", затем это довольно просто с основанным на Perl rename
команда, с помощью групп получения и backreferencing.
Напр. учитывая [1 110]
$ ls
000000 02jan1999 19.11.2017 23-11-2012 file
затем
$ rename -n 's/(\d{2})[-.](\d{2})[-.](\d{4})/$3-$2-$1-file-name-default/' *
rename(19.11.2017, 2017-11-19-file-name-default)
rename(23-11-2012, 2012-11-23-file-name-default)
OTOH, если Вы хотите сделать преобразования даты как jan
-> 01
, затем это немного более сложно. Вы могли записать свою собственную справочную таблицу с помощью хеша или использовать strptime
и strftime
методы, предоставленные Time::Piece
модуль:
$ rename -n '
BEGIN{use Time::Piece};
my $dt;
eval {
$dt = Time::Piece->strptime( Если действительно только необходимо "скорректировать символьный порядок", затем это довольно просто с основанным на Perl rename
команда, с помощью групп получения и backreferencing.
Напр. учитывая [1 110] [110]
затем
[111] OTOH, если Вы хотите сделать преобразования даты как jan
-> 01
, затем это немного более сложно. Вы могли записать свою собственную справочную таблицу с помощью хеша или использовать strptime
и strftime
методы, предоставленные Time::Piece
модуль:
[112],"%d-%m-%Y");
} or do {
eval {
$dt = Time::Piece->strptime( Если действительно только необходимо "скорректировать символьный порядок", затем это довольно просто с основанным на Perl rename
команда, с помощью групп получения и backreferencing.
Напр. учитывая [1 110] [110]
затем
[111] OTOH, если Вы хотите сделать преобразования даты как jan
-> 01
, затем это немного более сложно. Вы могли записать свою собственную справочную таблицу с помощью хеша или использовать strptime
и strftime
методы, предоставленные Time::Piece
модуль:
[112],"%d.%m.%Y");
} or do {
eval {
$dt = Time::Piece->strptime( Если действительно только необходимо "скорректировать символьный порядок", затем это довольно просто с основанным на Perl rename
команда, с помощью групп получения и backreferencing.
Напр. учитывая [1 110] [110]
затем
[111] OTOH, если Вы хотите сделать преобразования даты как jan
-> 01
, затем это немного более сложно. Вы могли записать свою собственную справочную таблицу с помощью хеша или использовать strptime
и strftime
методы, предоставленные Time::Piece
модуль:
[112],"%d%b%Y");
} or return;
}
};
Если действительно только необходимо "скорректировать символьный порядок", затем это довольно просто с основанным на Perl rename
команда, с помощью групп получения и backreferencing.
Напр. учитывая [1 110] [110]
затем
[111] OTOH, если Вы хотите сделать преобразования даты как jan
-> 01
, затем это немного более сложно. Вы могли записать свою собственную справочную таблицу с помощью хеша или использовать strptime
и strftime
методы, предоставленные Time::Piece
модуль:
[112] = $dt->strftime("%Y-%m-%d-file-name-default")
' *
rename(02jan1999, 1999-01-02-file-name-default)
rename(19.11.2017, 2017-11-19-file-name-default)
rename(23-11-2012, 2012-11-23-file-name-default)