Переименовать файл с помощью regex (Linux Command line)

0

У меня есть сценарий резервного копирования, который создает два файла:

a ) db_mywebsite_2018-01-10_00-25.sql.gz

b ) mywebsite1_2018-01-10_00-01.tar.gz

Я ищу команду Linux с регулярным выражением для переименования обоих файлов в соответствии с db_mywebsite.sql.gz mywebsite1.tar.gz

Команда regex должна удалить дату (20XX-XX-XX_XX-XX) из имен файлов (каждый день она будет отличаться).

Спасибо за вашу помощь!

    
задан Martin Smith 10.01.2018 в 22:49
источник

1 ответ

2

Вы должны посмотреть на rename . Он принимает шаблоны регулярных выражений.

Использование:

rename [options] [Perl regex search/replace expression] [files]

От man rename :

-v, --verbose
       Verbose: print names of files successfully renamed.
-n, --no-act
       No Action: show what files would have been renamed.

EDIT:

Соответствующее регулярное выражение для ваших имен файлов - _\d{4}-\d{2}-\d{2}_\d{2}-\d{2} . Таким образом, вы можете найти это в именах файлов, а затем заменить его на ничего, как показано ниже:

rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz

Я не тестировал команду выше, но она должна работать.

    
ответ дан Mahdi 10.01.2018 в 23:10
источник