У меня есть сценарий резервного копирования, который создает два файла:
a) db_mywebsite_2018-01-10_00-25.sql.gz
a ) mywebsite1_2018-01-10_00-01.tar.gz
Я ищу команду Linux с регулярным выражением для переименования обоих файлов в соответствии с db_mywebsite.sql.gz mywebsite1.tar.gz
Команда regex должна удалить дату (20XX-XX-XX_XX-XX) из имен файлов (каждый день она будет отличаться).
Спасибо за вашу помощь!
Вы должны взглянуть на команду 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:
Соответствующий regex для ваших имен файлов _\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
Я не тестировал выше команду, но она должна работать.
Вы должны взглянуть на команду 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:
Соответствующий regex для ваших имен файлов _\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
Я не тестировал выше команду, но она должна работать.
Вы должны взглянуть на команду 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:
Соответствующий regex для ваших имен файлов _\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
Я не тестировал выше команду, но она должна работать.