скорректируйте символьный порядок имен файлов (пакет)

У меня есть несколько файлов, названных по дате, и я пытаюсь внести пакетное изменение в именовании

они похожи на это:

dd-mm-yyyy or dd.mm.yyyy or ddjanyyyy

и я пытаюсь стандартизировать всех как это:

yyyy-mm-dd-file-name-default
1
задан 20 November 2019 в 00:26

1 ответ

Если действительно только необходимо "скорректировать символьный порядок", затем это довольно просто с основанным на 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)
0
ответ дан 7 December 2019 в 18:04

Другие вопросы по тегам:

Похожие вопросы: