Изменить формат даты в именах файлов

Я получаю электронные письма, формат имени файла такой (Это формат Unix для даты + .report-server)

1509106656.32538_1.report-server

Теперь у меня есть несколько электронных писем. Я хочу отформатировать все имена файлов с новым форматом даты и времени, подобным этому.

dd-mm-yyyy.report-server
0
задан 10 January 2018 в 14:46

3 ответа

Как насчет этого:

for i in *.report-server; do echo mv "$i" "$(date -d@${i%%.*} +%d-%m-%Y.${i##*.})"; done

Это циклически перебирает файлы .report-server в текущем каталоге, и для каждого файла выводится строка типа

mv 1509106656.32538_1.report-server 27-10-2017.report-server

, где вы можете проверить имя файла. Если он делает то, что вы хотите, просто удалите echo из команды и запустите его, чтобы выполнить переименование.

Будьте осторожны ! Если в итоге у вас будет несколько файлов с одной и той же датой, mv будет (по умолчанию) перезаписывать первые из них. Если вы хотите сохранить (предположительно уникальную) часть .32538_1, измените ${i##*.} на ${i#*.} в команде. Если вы хотите, чтобы mv спрашивал перед перезаписью файлов, добавьте опцию -i.

1
ответ дан 10 January 2018 в 14:46
  • 1
    @Raja, что ссылка не работает. Хорошо так или иначе не используйте pastebin., см. здесь почему – Ashu 3 June 2012 в 12:01
  • 2
    @Raja, что ссылка не работает. Хорошо так или иначе не используйте pastebin., см. здесь почему – Ashu 3 June 2012 в 12:01

Вы можете использовать следующий скрипт в качестве подсказки:

#!/bin/bash
for i in *.report-server; do
    timestamp=$(echo $i | cut -d. -f1)
    output_date=$(date +'%d-%m-%Y' -d @$timestamp)
    mv "$i" "${output_date}.report-server"
1
ответ дан 10 January 2018 в 14:46

Вот способ сделать это, используя perl-based rename или prename (по сути, дубликат . Как мне выполнить пакетное преобразование имен папок из одного формата даты в другой , с разными спецификаторами формата)? :

$ rename -n -- '
  BEGIN{use Time::Piece};
  s/(\d{10})\.\d{5}_1/Time::Piece->strptime($1, "%s")->strftime("%d-%m-%Y")/e
' *.report-server
rename(1509106656.32538_1.report-server, 27-10-2017.report-server)

Удалите -n (или измените на -v, если вы хотите подробный вывод), когда вы счастливы, что он делает то, что вы хотите.

1
ответ дан 10 January 2018 в 14:46
  • 1
    @Ashu сейчас я проверил ссылку pastebin и ее штраф. но спасибо за информацию об этом:) я не собираюсь касаться его снова. – rɑːdʒɑ 3 June 2012 в 12:08
  • 2
    @Ashu сейчас я проверил ссылку pastebin и ее штраф. но спасибо за информацию об этом:) я не собираюсь касаться его снова. – rɑːdʒɑ 3 June 2012 в 12:08

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

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