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

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

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) из имен файлов (каждый день она будет отличаться).

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

0
задан 11 January 2018 в 01:49

3 ответа

Вы должны взглянуть на команду 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

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

2
ответ дан 22 May 2018 в 15:37

Вы должны взглянуть на команду 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

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

2
ответ дан 17 July 2018 в 23:23

Вы должны взглянуть на команду 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

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

2
ответ дан 24 July 2018 в 13:54

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

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