Como usar o comando de mudança de nome no Linux

Assuma o poder de renomeação de arquivos do mundo mv e vamos fazer uma pausa. Rename é flexível, rápido e às vezes ainda mais simples. Aqui está um tutorial para este poder de comando.

índice

  1. O que há de errado com mv?
  2. Renomeie um único arquivo com mv
  3. Renomeie vários arquivos com mv
  4. O que acabou de acontecer?
  5. Deve haver uma maneira mais fácil
  6. vamos fazer de novo
  7. O que aconteceu desta vez?
  8. Alterar outras partes de um nome de arquivo
  9. Excluindo parte de um nome de arquivo
  10. Restringir alterações a partes específicas de nomes de arquivos
  11. Pesquisar com agrupamentos
  12. Usando traduções com mudança de nome
  13. Você (Wo | Do) não aprende Perl em cinco minutos

O que há de errado com mv?

Não há nada de errado mv . O comando faz um ótimo trabalho e é encontrado em todas as distribuições Linux, no macOS e em outros sistemas operacionais do tipo Unix. Portanto, está sempre disponível. Mas às vezes você só precisa de uma escavadeira, não de uma pá.

O comando mv tem um propósito na vida, que é mover arquivos. É um efeito colateral feliz que pode ser usado para mover um arquivo existente para um novo arquivo, com um novo nome. O efeito líquido é renomear o arquivo, para obtermos o que queremos. Mas mv não é uma ferramenta de renomeação de arquivos dedicada.

Renomeie um único arquivo com mv

Use mv para renomear um tipo de arquivo mv , um espaço, o nome do arquivo, um espaço e o novo nome que você deseja que o arquivo tenha. Em seguida, pressione Enter.

você pode usar ls para verificar se o arquivo foi renomeado.

 mv arquivo antigo.txt arquivo novo.txt
 ls *.txt

Renomeie vários arquivos com mv

As coisas ficam complicadas quando você deseja renomear vários arquivos. mv não tem a capacidade de lidar com a renomeação de vários arquivos. Você tem que recorrer a alguns truques inteligentes do Bash. Tudo bem se você conhece um pouco da linha de comando de nível médio, mas as complexidades de renomear vários arquivos com mv contrastam fortemente com a facilidade de usar mv para renomear um único arquivo.

As coisas aumentam rapidamente.

Digamos que temos um diretório com uma variedade de arquivos, de diferentes tipos. Alguns desses arquivos têm uma extensão ".prog". Queremos renomeá-los a partir da linha de comando para que tenham uma extensão ".prg".

como podemos lutar contra mv para fazer isso por nós? Vamos dar uma olhada nos arquivos.

 ls *.prog -l

Aqui está uma maneira de fazer isso que não envolve escrever um arquivo de script Bash real.

 para f em *.prog; do mv -- "$f" "${f%.prog}.prg"

Função? Vamos examinar os arquivos e ver.

 ls *.pr*

Então sim, funcionou. Agora são todos arquivos .prg e não há arquivos .prog no diretório.

O que acabou de acontecer?

O que esse longo comando realmente fez? Vamos analisá-lo.

 para f em *.prog; do mv -- "$f" "${f%.prog}.prg"

A primeira parte inicia um loop que processará cada arquivo ".prog" no diretório por sua vez.

A próxima parte diz qual será o processamento. fazer . ele está usando mv para mover cada arquivo para um novo arquivo. O novo arquivo será nomeado com o nome do arquivo original excluindo a parte .prog. Em vez disso, uma nova extensão de ".prg" será usada.

Deve haver uma maneira mais fácil

Certamente. E a rename comandada.

rename não faz parte de uma distribuição padrão do Linux, portanto, você precisará instalá-lo. Ele também tem um nome diferente em diferentes famílias Linux, mas todos funcionam da mesma maneira. Você só precisa substituir o nome do comando apropriado com base na versão do Linux que está usando.

nas distribuições derivadas do Ubuntu e do Debian, você instala o rename assim:

 sudo apt-get install renomear

Nas distribuições derivadas do Fedora e RedHat, instale prename assim. Observe o "p" inicial, que significa Perl.

 sudo dnf install prename

Para instalá-lo no Manjaro Linux, use o seguinte comando. Observe que o comando rename é chamado perl-rename .

 sudo pacman -Syu perl-rename

vamos fazer de novo

E desta vez usaremos rename . Voltaremos o relógio para que tenhamos uma série de arquivos ".prog".

 ls *.prog

Agora vamos usar o seguinte comando para renomeá-los. Em seguida, verificaremos com ls se funcionou. Lembre-se de substituir rename pelo nome de comando apropriado para o seu Linux se você não estiver usando o Ubuntu ou um Linux derivado do Debian.

 renomear 's/.prog/.prg/' *.prog
 ls *.pr*

Funcionou, agora são todos arquivos ".prg" e não há arquivos ".prog" no diretório.

O que aconteceu desta vez?

Vamos explicar esse pouco de mágica, em três partes.

A primeira parte é o nome do comando, rename (ou prename ou perl-rename , para outras distribuições).

A última parte é *.prog , que diz ao rename para operar em todos os arquivos .prog.

A parte do meio define o trabalho que queremos fazer em cada nome de arquivo. O s significa substituto. O primeiro termo ( .prog ) e qual rename procurar em cada nome de arquivo e o segundo termo ( .prg ) é o que será substituído.

A parte central do comando, ou expressão central, é uma 'expressão regular' Perl e é o que dá ao controle de rename sua flexibilidade.

Alterar outras partes de um nome de arquivo

Até agora nós mudamos as extensões dos nomes dos arquivos, vamos mudar outras partes dos nomes dos arquivos.

No diretório existem muitos arquivos de origem C. Todos os nomes de arquivos têm o prefixo "slang_". Podemos verificar isso com ls .

 ls sl*.c

Substituiremos todas as ocorrências de "slang_" por "sl_". O formato do comando já nos é familiar. Estamos apenas alterando o termo de pesquisa, o termo de substituição e o tipo de arquivo.

 renomear 's/slang_/sl_' *.c

Desta vez estamos procurando os arquivos ".c" e estamos procurando por "slang_". Sempre que "slang_" é encontrado em um nome de arquivo, ele é substituído por "sl_".

Podemos verificar a saída desse comando repetindo o comando ls acima com os mesmos parâmetros:

 ls sl*.c

Excluindo parte de um nome de arquivo

Podemos remover parte de um nome de arquivo substituindo o termo de pesquisa por nada.

 ls *.c
 renomear 's/sl_//' *.c
 ls *.c

Podemos ver pelo comando ls que nossos arquivos .c são todos precedidos por sl_. Vamos nos livrar dele completamente.

O comando rename segue o mesmo formato de antes. Vamos procurar os arquivos ".c". O termo de pesquisa é "sl_", mas não há termo de substituição. Duas barras invertidas sem nada entre elas não significam nada, uma string vazia.

rename o processo de cada arquivo ".c" por sua vez. Procure por "sl_" no nome do arquivo. Se for encontrado, não será substituído por nada. Em outras palavras, o termo de pesquisa é removido.

O segundo uso do comando ls confirma que o prefixo "sl_" foi removido de cada arquivo ".c".

Restringir alterações a partes específicas de nomes de arquivos

Usamos ls para ver arquivos que possuem a string "param" em seu nome de arquivo. Então, usaremos rename para substituir essa string pela string "parâmetro". Usaremos ls mais uma vez para ver o efeito que o comando rename teve nesses arquivos.

 ls *param*
 renomear 's/param/parameter' *.c
 ls *param*

Quatro arquivos são encontrados com "param" no nome do arquivo. param.c, param_one.c e param_two.c têm "param" no início do nome third_param.c têm "param" no final do nome, logo antes da extensão.

O comando rename procurará por "parâmetro" em qualquer lugar no nome do arquivo e o substituirá por "parâmetro" em todos os casos.

O segundo uso do comando ls nos mostra que foi exatamente isso que aconteceu. Independentemente de "param" estar no início ou no final do nome do arquivo, ele foi substituído por "param".

Podemos usar metacaracteres Perl para refinar o comportamento da expressão intermediária. Metacaracteres são símbolos que representam posições ou sequências de caracteres. Por exemplo, ^ significa "início de uma string", $ significa "fim de uma string" e . indica qualquer caractere único (exceto um caractere de nova linha).

Usaremos o início do metacaractere string ( ^ ) para limitar nossa busca ao início dos nomes dos arquivos.

 ls *param*.c
 renomear 's/^parâmetro/valor/' *.c
 ls *param*.c
 ls valor*.c

Os arquivos que renomeamos anteriormente estão listados e podemos ver que a string "parâmetro" está no início de três nomes de arquivo e no final de um dos nomes de arquivo.

Nosso comando rename usa o início do metacaractere de linha (^ ) antes do termo de pesquisa "parâmetro". isso diz que rename considere que o termo de pesquisa só foi encontrado se for encontrado no início do nome do arquivo. A string de pesquisa "parâmetro" será ignorada se for encontrada em qualquer outro lugar no nome do arquivo.

Verificando com ls , podemos ver que o nome do arquivo que tinha "parâmetro" no final do nome do arquivo não foi alterado, mas os três nomes de arquivo que tinham "parâmetro" no início de seus nomes tiveram a string de pesquisa substituída pelo termo de substituição " valor".

O poder de rename está no poder do Perl. Todo o poder do Perl está à sua disposição.

Pesquisar com agrupamentos

rename tem ainda mais truques na manga. Vamos considerar o caso em que você pode ter arquivos com strings semelhantes em seus nomes. Eles não são exatamente as mesmas strings, portanto, uma simples pesquisa e substituição não funcionará aqui.

Neste exemplo, usamos ls para verificar quais arquivos temos que começam com "str". Existem dois deles, string.ce strangle.c. Podemos renomear ambas as strings ao mesmo tempo usando uma técnica chamada pooling.

A expressão principal deste comando rename procura por strings dentro de nomes de arquivos que tenham a sequência de caracteres "stri" ou "Stra", onde essas sequências são imediatamente seguidas por "ng". Em outras palavras, nosso termo de pesquisa procurará por "string" E "estranho". O termo de substituição é "explosão".

 ls str*.c
 renomear 's/(stri|stra)ng/bang/' *.c
 ls ban*.c

Usar ls uma segunda vez confirma que string.c mudou para bang.c e strangle.c agora é bangle.c.

Usando traduções com mudança de nome

O comando rename pode executar ações em nomes de arquivos chamados de traduções. Um exemplo de tradução simples seria forçar um conjunto de nomes de arquivos a serem maiúsculas.

No comando rename abaixo, observe que não estamos usando um s/ para iniciar a expressão principal, estamos usando y/ . isso diz que rename não estamos fazendo uma substituição; estamos fazendo uma tradução.

O termo az é uma expressão Perl que indica todos os caracteres minúsculos na sequência de a a z. Da mesma forma, o termo AZ representa todas as letras maiúsculas na sequência de A a Z.

A expressão do meio neste comando pode ser parafraseada como "se alguma das letras minúsculas de a a z estiver no nome do arquivo, substitua-as pelos caracteres correspondentes da sequência de caracteres maiúsculos a a z".

Para forçar os nomes de todos os arquivos ".prg" para maiúsculas, use este comando:

renomear 'y/az/AZ/' * .prg

 ls *.PRG

O comando ls nos mostra que todos os nomes de arquivos ".prg" estão agora em maiúsculas. Na verdade, para ser mais preciso, eles não são mais arquivos .prg. São arquivos .PRG. O Linux diferencia maiúsculas de minúsculas.

Podemos reverter esse último comando invertendo a posição dos termos az e AZ na expressão central.

renomear 'y/AZ/az/' * .PRG

 ls *.prg

Você (Wo | Do) não aprende Perl em cinco minutos

Familiarizar-se com Perl é um tempo bem gasto. Mas para começar a usar os recursos de economia de tempo do comando rename , você não precisa ter muito conhecimento de Perl para obter grandes benefícios em termos de poder, simplicidade e tempo.

  • Como ocultar mensagens de spam de remetentes desconhecidos no iPhone
  • Aqui está tudo que chega à Netflix na semana de 10 de janeiro de 2022

descubra mais conteúdo

Google Pixel Watch também tem detecção de queda, mas não até o próximo ano

As melhores xícaras de café aquecidas de 2022

Como automatizar seu iPhone com base na hora, atividade ou localização

"Isso deve ter sido antes do meu tempo"

Por que a NASA enviou Snoopy para a Lua? – Revisão Geek

O que é uma carga fantasma?

Como renomear arquivos no Linux?

Renomeie arquivos no Linux com o comando mv

O comando mv só pode renomear um arquivo , mas pode ser usado com outros comandos para renomear vários arquivos . Vamos pegar comandos, find, for ou while loops e renomear vários .

Como renomear um arquivo no Ubuntu?

Clique com o botão direito do mouse em um arquivo ou pasta e selecione Renomear ou selecione o arquivo e pressione F2. Digite o novo nome e pressione Enter ou clique em Renomear .

Como renomear um arquivo txt no Linux?

Podemos renomear arquivos e diretórios com os comandos rename e mv no Terminal Linux . O comando mv só pode renomear um arquivo por vez, mas o comando rename pode renomear vários arquivos simultaneamente.

Como renomear uma pasta no Linux?

Para renomear diretórios usamos o mesmo comando mv, mas não é necessário indicar um novo caminho para o diretório , apenas um novo nome.

Ir arriba