Renomear lote com base na captura regex

0

Perdoe-me a minha falta de pesquisa, mas não estou familiarizado com todas as ferramentas existentes.

Desejo renomear em lote uma lista de arquivos como

some_name_n1_51000
some_name_n2_51000
some_name_n3_51000
...

que deve realmente ser nomeado

some_name_n51000_1
some_name_n51000_2
some_name_n51000_3
...

i.e. o 51000 e o número de série devem trocar de posição.

Os seguintes trabalhos no Debian, usando o script perl rename (que é chamado prename ):

prename -nv 's/some_name_n(\d{1,2})_51000/some_name_n51000_$1' *

Observe que -v fornece uma saída detalhada e -n significa uma execução a seco. O% final% co_de é um seletor de arquivos.

Razões pelas quais não funcionou no começo:

  • usei * em vez do script perl rename .
  • Esqueci de capturar o grupo regex entre chaves, que é armazenado na variável prename ( $1 , $2 para o segundo e terceiro grupo e assim por diante).

O que pode ser melhorado:

  • No Debian, isso me dá um aviso de depreciação

    Programa obsoleto em uso: renomeie como enviado com o pacote Debian perl será removido após o lançamento do trecho. Por favor instale o separado 'Renomear' pacote que irá fornecer o mesmo comando.

O pacote $3 , no entanto, aceita comandos ligeiramente diferentes.

    
por Geert 27.08.2018 / 11:14

0 respostas