Переименование имен файлов в Linux на основе условий - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть несколько файлов в каталоге Linux, как показано ниже.

email_Tracking_export_2018_08_26.zip
email_Tracking_export_2018_08_27.zip
email_Tracking_export_2018_08_28.zip
email_Tracking_export_2018_08_29.zip
email_Tracking_export_2018_09_03.zip
email_Tracking_export_history_Novemeber.zip
email_Tracking_export_history_December.zip
email_Tracking_export_history_january.zip
email_Tracking_export_history_february.zip
email_Tracking_export_history_march.zip
email_Tracking_export_history_April.zip

Теперь я хочу изменить имена файлов, как показано ниже.

email_Tracking_export_2018_08_26.zip
email_Tracking_export_2018_08_27.zip
email_Tracking_export_2018_08_28.zip
email_Tracking_export_2018_08_29.zip
email_Tracking_export_2018_09_03.zip
email_Tracking_export_2017_11_01.zip
email_Tracking_export_2017_12_01.zip
email_Tracking_export_2018_01_01.zip
email_Tracking_export_2018_02_01.zip
email_Tracking_export_2018_03_01.zip
email_Tracking_export_2018_04_01.zip

Условия:

  1. Если имена файлов представлены в формате гггг-мм-дд, оставьте их как
  2. если имена файлов представлены в алфавитном порядке, преобразуйте в гггг-мм-дд
  3. если месяц прошел в этом конкретном году, чем уйти, как если бы нет, то год должен быть предыдущим годом.

Как мне достичь этого в bash/Linux

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018
for f in email_Tracking_export_*.zip; do
  case "$f" in
  email_Tracking_export_????_??_??.zip) : ignore ;;
  *) date=$(stat -c %Y "$f") # mod time in seconds
     fmtdate=$(date --date="@$date" +%Y_%m_%d) # formatted
     mv "$f" email_Tracking_export_$fmtdate.zip
  ;;
  esac
done
0 голосов
/ 07 сентября 2018

Вот шаги в небольших частях, ответы на которые вы можете найти и выполнить как bash-скрипт,

  1. Создайте пару значений ключа сопоставления, которая отображает месяц в его числовое значение. (Позаботьтесь о нижнем / верхнем регистре)
  2. Для каждого файла проверьте их формат.
  3. Создать новое имя для каждого файла.
  4. Затем используйте команду mv, чтобы переименовать файл с новым именем.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...