renomear um número de arquivos aumentando seu número final por uma constante usando o script bash [closed]

0

Eu tenho esses arquivos em um diretório:

mmm.1
mmm.2
mmm.3
.
.
.
.
.

eu quero renomeá-los como:

mmm.31
mmm.32
mmm.33
.
.
.

Basta adicionar o número '30' ao número final em cada nome de arquivo.

    
por 9pp 16.03.2018 / 07:08

1 resposta

1

MODIFICADO: Depois que você nos informou que está lidando com ~ 300 arquivos, as respostas precisam ser modificadas. Na resposta editada abaixo, substitua o número 300 pelo número exato de limite superior dos arquivos pré-existentes.

for file in mmm.{300..1} ; do mv "${file}" "${file%.*}.$((30+${file#*.}))" ; done

Esta resposta é muito eficiente, pois faz tudo dentro de bash usando bash de habilidades nativas e não precisa de programas externos ou lançamento de subprocessos.

  1. ${file%.*} retorna o prefixo do nome do arquivo antes do período.

  2. '$ ((..)) é o idioma da operação matemática do bash.

  3. ${file#*.} retorna o sufixo do nome do arquivo após o período. Se você estiver preocupado com a possibilidade de ter nomes de arquivos com mais de um período incorporado, substitua o # por ## .

Veja man bash para mais detalhes e muitos outros recursos nativos muito interessantes.

    
por 16.03.2018 / 07:16