Renomeie vários arquivos de uma só vez na linha de comando do Linux
O comando Renomear pode ser usado para renomear vários arquivos no Linux de uma vez. Aqui estão alguns cenários práticos em que você pode usar o comando renomear.
Acredito que você já saiba como renomear arquivos no Linux com o comando mv. Você simplesmente o usa no formato:
mv old_file_name new_file_name
O mesmo comando mv também é usado para renomear diretórios. Não há nada de errado com este método. Afinal, esse é o caminho padrão.
Mas e a situação em que você precisa renomear vários arquivos? Usar o comando mv um por um levaria muito tempo e certamente deveria ser evitado.
Você pode usar a opção de comando find exec com o comando mv para automatizar esse processo.
Mas deixe-me contar uma maneira ainda mais simples de renomear arquivos com base no padrão regex.
Renomear comando no Linux
Existe um utilitário de linha de comando chamado rename que permite renomear todos os arquivos que correspondem a um determinado padrão no formato Perl regex. O comando rename funciona apenas no nome do arquivo, não no arquivo em si.
Este é o comando de renomeação de sintaxe a seguir:
rename [options] perlexpr [files]
Este 'comando renomear' tem as seguintes opções:
-v: modo detalhado.
-n: Nenhuma ação. Mostre os arquivos que seriam renomeados, mas não os renomeie.
-o: Sem substituição. Não substitua os arquivos existentes.
-f: Força. Sobrescrever arquivos existentes.
-s: Não renomeie o link simbólico, mas seu alvo
Observe que o comando renomear não é um utilitário padrão pré-instalado nas distribuições Linux, como o comando mv ou cp. Você pode ter que instalá-lo. Se você é um usuário sudo no Ubuntu ou Debian, você pode usar este comando para instalar a renomeação:
sudo apt install rename
Agora você deve estar se perguntando como renomear arquivos com o comando rename. Deixe-me mostrar dois cenários práticos em que esse comando economizará muito tempo.
Cenário 1: Substitua um caractere por outro em todos os nomes de arquivos no Linux
Imagine se você tivesse espaços em branco em vários nomes de arquivos. É um pesadelo lidar com espaços em nomes de arquivos no Linux. É por isso que nenhum usuário experiente nomeia um arquivo com espaços.
Naturalmente, você desejaria remover os espaços e substituí-los por um sublinhado (_). O comando renomear será muito útil aqui. Vamos ver como.
Para substituir os espaços por sublinhados nos nomes de todos os arquivos do diretório atual, basta usar o comando renomear desta forma:
rename 's/ /_/g' *
Se você estiver remotamente familiarizado com regex, entenderá que s/ /_/g está procurando por espaço e substituindo todas as ocorrências de espaço por _.
A parte interessante é o asterisco(*). O asterisco indica para você renomear os arquivos correspondentes no diretório atual.
Mas e se você também quiser renomear todos os arquivos correspondentes nos subdiretórios? Nesse caso, você pode usar dois asteriscos como este:
rename 's/ /_/g' **
Cenário 2: alterar extensões de vários arquivos de uma vez no Linux
Aqui está outro cenário para você. Você tem vários arquivos com nomes como meu_arquivo.xyz e deseja renomear esses arquivos para que se tornem algo como meu_arquivo.abc.
Para alterar as extensões de vários arquivos de uma vez, você pode usar o comando rename da seguinte maneira:
rename 's/\.xyz$/.abc/' **
Deixe-me explicar o comando acima para você.
‘s/\.xyz$/.abc/’: Esta é uma expressão regular que significa substituir o caractere .xyz no final da linha por .abc. O\adicional é usado para escapar do . caso contrário, significaria corresponder a qualquer caractere antes de xyz.
** significa procurar no diretório atual e seus subdiretórios.
Você gostou do comando renomear?
Poucas pessoas conhecem o comando renomear. Isso também pode ser devido ao fato de renomear não ser um comando de fato em muitos sistemas Linux.
No entanto, acho este comando bastante útil ao renomear vários arquivos simultaneamente.
E você? Você já usou o comando renomear no passado? Como você prefere renomear vários arquivos de uma vez?