Renomeia o arquivo usando regex (linha de comando do Linux)

0

Eu tenho um script de backup que cria dois arquivos:

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

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

Estou procurando um comando do Linux com regex para renomear os dois arquivos para corresponderem a db_mywebsite.sql.gz mywebsite1.tar.gz

O comando regex precisa remover a data (20XX-XX-XX_XX-XX) dos nomes dos arquivos (cada dia será diferente).

Obrigado pela sua ajuda!

    
por Martin Smith 10.01.2018 / 22:49

1 resposta

2

Você deve dar uma olhada no comando rename . Aceita padrões de regex.

Uso:

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

De man rename :

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

EDITAR:

O regex apropriado para seus nomes de arquivos é _\d{4}-\d{2}-\d{2}_\d{2}-\d{2} . Então você pode encontrar isso em nomes de arquivos e substituí-los por nada como abaixo:

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

Eu não testei o comando acima, mas ele deve funcionar.

    
por Mahdi 10.01.2018 / 23:10