Как пакетно переименовать файлы и преобразовать метку даты из ДД-ММ-ГГГГ в ГГГГ-ММ-ДД?

Я пытаюсь переименовать папку с файлами, которые содержат метку даты, например:

string_DD-MM-YYYY_hhmm.pdf

, в этот формат:

string_YYYY-MM-DD_hhmm.pdf

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

Пример: PB_KAZ_KtoNr_0463266665_01-02-2014_0341.pdf должен стать PB_KAZ_KtoNr_0463266665_2014-02-01_0341.pdf .

Я нашел этот аналогичный вопрос , но он касается формата ДДММГГГГ, а не ДД-ММ-ГГГГ, и ответы на него слишком сложны для моей ситуации. Поскольку строка всегда одинакова по содержанию и длине (24 символа), достаточно простой команды, которая разбивает и повторно собирает строку по позициям.

Заранее спасибо!

0
13.04.2017, 15:37
2 ответа

С переименованием Perl (отдельная команда):

rename -n 's/(.*)_(.*)-(.*)-(.*)_(.*.pdf)/$1_$4-$3-$2_$5/' *.pdf

Если все выглядит нормально remove -n .

3
28.01.2020, 02:34

Это грубый метод, особенно если файлов много, но самый простой - с awk:

Предполагается, что у вас нет других PDF-файлов в папке, кроме string_DD-MM-YYYY_hhmm.pdf , и эта часть string_ имеет длину 24 символа

cd в папку, а затем запустите это:

for i in *.pdf; do mv $i `\ls -1 $i | awk '{print substr ($0, 0, 24)}'``\ls -1 $i | awk -F[_.] '{print$(NF-1)}'| awk -F- '{print$3"-"$2"-"$1}'`.pdf; done
0
28.01.2020, 02:34

Теги

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