Header Ads

Como usar o comando renomear no Linux

Se familiarize com a potência de renomeação de arquivos do mundo Linux e dê um descanso a mv - e a você mesmo. Renomear é flexível, rápido e às vezes até mais fácil. Aqui está um tutorial para este powerhouse de um comando.

O que há de errado com o mv?

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

O comando mv tem um propósito na vida, e é 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, então conseguimos o que queremos. Mas mv não é uma ferramenta dedicada de renomeação de arquivos.

Renomeando um único arquivo com mv

Para usar 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.

 mf oldfile.txt newfile.txt 

 ls * .txt 

Renomeando vários arquivos com mv

As coisas ficam mais complicadas quando você deseja renomear vários arquivos. O mv não tem capacidade para lidar com a renomeação de vários arquivos. Você deve recorrer ao uso de alguns truques interessantes de Bash. Tudo bem se você conhece algum fu de linha de comando de médio porte, mas a complexidade de renomear múltiplos arquivos com mv contrasta fortemente com a facilidade de usar mv para renomear um único arquivo.

As coisas aumentam rapidamente.

Digamos que tenhamos um diretório com vários arquivos, de diferentes tipos. Alguns desses arquivos têm uma extensão “.prog”. Queremos renomeá-los na linha de comando para que eles tenham uma extensão ".prg".

Como podemos fazer isso para nós? Vamos dar uma olhada nos arquivos.

 ls * .prog -l 

IMAGEM_2

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

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

IMAGEM_3

Falta desse trabalho? Vamos verificar os arquivos e ver.

 ls * .pr * 

IMAGEM_4

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

O que acabou de acontecer?

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

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

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

A próxima parte diz o que o processamento fará. 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". Uma nova extensão de “.prg” será usada no lugar.

Tem que haver uma maneira mais simples

Definitivamente. É o comando rename.

renomear não faz parte de uma distribuição Linux padrão, então você precisará instalá-lo. Ele também tem um nome diferente em diferentes famílias de Linux, mas todos funcionam da mesma maneira. Você apenas terá que substituir o nome do comando apropriado de acordo com o sabor do Linux que você está usando.

no Ubuntu e distribuições derivadas do Debian que você instala renomeiam assim:

 sudo apt-get install renomear 

Nas distribuições derivadas do Fedora e RedHat você instala o nome do site como este. Observe o “p” inicial, que significa Perl.

 sudo dnf install nome_do_principal 

Para instalá-lo no Manjaro Linux use o seguinte comando. Note que o comando renomear é chamado de renomear perl.

 sudo pacman -Suui perl-rename 

IMAGEM_7

Vamos fazer isso novamente

]

E desta vez vamos usar renomear. Vamos reverter o relógio para que tenhamos um conjunto 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 renomear com o nome do comando apropriado para o seu Linux se você não estiver usando o Ubuntu ou um Linux derivado do Debian.

 renomeie / .prog / .prg / '* .prog 

 ls * .pr * 

IMAGEM_9

Isso funcionou, agora eles são todos arquivos ".prg", e não há ". prog ”arquivos deixados no diretório.

O que aconteceu com este tempo?

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

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

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

A parte intermediária define o trabalho que queremos que seja feito em cada nome de arquivo. O s significa substituto. O primeiro termo (.prog) é o que a renomeação procurará em cada nome de arquivo e o segundo termo (.prg) será substituído.

A parte intermediária do comando, ou expressão central, é uma expressão regular Perl 'e é o que dá ao comando renomear sua flexibilidade.

Alterando outras partes de um nome de arquivo

Alteramos extensões de nome de arquivo até agora, vamos corrigir outras partes dos nomes de arquivos.

No diretório há muitos arquivos de código-fonte em C. Todos os nomes de arquivos são prefixados com “slang_”. Podemos verificar isso com ls.

 ls sl * .c 

Vamos substituir todas as ocorrências de "slang_" por " sl_ ”. O formato do comando já é familiar para nós. Estamos apenas alterando o termo de pesquisa, o termo de substituição e o tipo de arquivo.

 renomeie / slang_ / sl_ '* .c 

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

Podemos verificar o resultado desse comando repetindo o comando ls de cima com os mesmos parâmetros:

 ls sl * .c 

IMAGEM_12

Excluindo parte de um nome de arquivo

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

 ls * .c 

 renomear / sl _ // '* .c 

 ls *. c 

Podemos ver pelo comando ls que nossos arquivos “.c” são todos prefixados com “sl_”. Vamos nos livrar disso completamente.

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

A renomeação processará cada arquivo “.c”. Ele irá procurar por “sl_” no nome do arquivo. Se for encontrado, será substituído por nada. Em outras palavras, o termo de pesquisa é excluído.

O segundo uso do comando ls confirma que o prefixo "sl_" foi removido de todos os arquivos ".c".

Limite Mudanças em partes específicas de nomes de arquivos

Vamos usar ls para ver os arquivos que possuem a string “param” no nome do arquivo. Então, usaremos renomear para substituir essa string pela string "parameter". Vamos usar ls mais uma vez para ver o efeito que o comando renomear teve nesses arquivos.

 ls * param * 

 renomear / s / param / parâmetro '* .c 

 ls * param * 

IMAGEM_14

São encontrados quatro arquivos com “param” no nome do arquivo. param.c, param_one.c e param_two.c todos têm “param” no início do nome. third_param.c tem “param” no final do nome, logo antes da extensão.

O comando rename vai procurar por “param” em todos os lugares no nome do arquivo, e substituí-lo por “parameter” em todos os casos.

O segundo uso do comando ls nos mostra que isso é exatamente o que aconteceu. Se "param" estava no início ou no final do nome do arquivo, ele foi substituído por "parâmetro".

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

Vamos usar o início do metacaractere de string (^) para restringir nossa pesquisa ao início dos nomes de arquivo.

 ls * param * .c 

 renomear / ^ parâmetro / valor / '* .c 

 ls * param * .c 

Valor de

 ls * .c 

Os arquivos que renomeamos anteriormente são listados, e podemos ver que a string “parameter” está no início de três nomes de arquivos e é no final de um dos nomes de arquivos.

Nosso comando rename usa o metacaractere início de linha (^) antes do termo de pesquisa “parameter.” Isso diz ao renomear para considerar apenas o termo de pesquisa encontrado se estiver no início do nome do arquivo. A string de pesquisa “parameter” será ignorada se estiver em qualquer outro lugar no nome do arquivo.

Verificando com ls, podemos ver que o nome do arquivo que tinha “parameter” no final do nome do arquivo não foi modificado , mas os três nomes de arquivos que tinham "parâmetro" no início de seus nomes tiveram a seqüência de pesquisa substituída pelo termo substituto "valor".

O poder de renomear reside no poder de Perl. Todo o poder de Perl está à sua disposição.

A pesquisa com agrupamentos

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

Neste exemplo, usamos ls para verificar quais arquivos temos que começam com "str". Existem dois deles, string.c e strangle.c. Podemos renomear ambas as strings de uma só vez usando uma técnica chamada grouping.

A expressão central deste comando rename irá procurar por strings dentro de nomes de arquivos que possuem a sequência de caracteres “stri” ou “stra” onde essas seqüências são imediatamente seguido por "ng". Em outras palavras, nosso termo de pesquisa vai procurar por "string" e "strang". O termo de substituição é "bang".

 ls str * .c 

 renomear / (stri | stra) ng / bang / '* .c 

 ls ban * .c 

IMAGEM_16

Usando ls uma segunda vez confirma que string.c se tornou bang.c e strangle.c é agora bangle.c.

Usando traduções com renomear

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

No comando renomear abaixo, observe que não estamos usando um s / para iniciar a expressão central, estamos usando y /. Isso informa a renomeação de que não estamos realizando uma substituição; Estamos realizando uma tradução.

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

A expressão central neste comando pode ser parafraseada como “se qualquer uma das letras minúsculas de aaz for encontrada no nome do arquivo , substitua-os pelos caracteres correspondentes da sequência de caracteres maiúsculos de A a Z. ”

Para forçar os nomes dos arquivos de todos os arquivos“ .prg ”em letras maiúsculas, use este comando:

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

 ls * .PRG 

IMAGEM_17

O comando ls nos mostra que todos Os nomes de arquivos ".prg" agora estão em maiúsculas. Na verdade, para ser estritamente preciso, eles não são mais arquivos ".prg". Eles são arquivos ".PRG". O Linux faz distinção entre maiúsculas e minúsculas.

Podemos inverter o ú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

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

LEIA PRÓXIMO & rsaquo; Como impedir as pessoas de roubar seus pacotes & rsaquo; Por que os serviços de streaming cobram extra por HD e 4K? & Rsaquo; Como Transmitir o UFC 238 Cejudo vs. Moraes Online & rsaquo; Como inserir o Kaomoji no Windows 10 (╯ ° □ °) ╯︵ ┻━┻ & rsaquo; Como assistir a Copa do Mundo Feminina da FIFA de 2019 na Internet (sem cabo)

Via: How to Geek

Nenhum comentário