Я пытаюсь переименовать папку с файлами, которые содержат метку даты, например:
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 символа), достаточно простой команды, которая разбивает и повторно собирает строку по позициям.
Заранее спасибо!
С переименованием Perl (отдельная команда):
rename -n 's/(.*)_(.*)-(.*)-(.*)_(.*.pdf)/$1_$4-$3-$2_$5/' *.pdf
Если все выглядит нормально remove -n
.
Это грубый метод, особенно если файлов много, но самый простой - с 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