Comando de renomeação do Linux
Em sistemas operacionais do tipo Unix, o comando rename renomeia vários arquivos, usando expressões regulares . Foi escrito por Larry Wall , criador da linguagem de programação Perl .
Descrição
renomear renomeia os arquivos nomeados de acordo com a expressão regular perlexpr .
Se um determinado arquivo não for modificado pela expressão, ele não será renomeado. Se nenhum nome de arquivo for fornecido na linha de comando , os nomes dos arquivos serão lidos via entrada padrão .
Sintaxe
renomear [-v] [-n] [-f] perlexpr [ arquivos ]
Opções
-v , –verbose | Detalhado: imprime os nomes dos arquivos renomeados com sucesso. |
-n , –no-act | Nenhuma ação: mostre quais arquivos teriam sido renomeados. |
-f , –force | Forçar: sobrescrever arquivos existentes. |
Expressões Perl: uma visão geral rápida
O argumento perlexpr é uma expressão regular usada pela linguagem de programação Perl. As expressões regulares do Perl são um assunto complexo e diferenciado, mas aqui está uma breve visão geral:
Substituição
Para substituir uma expressão por outra, a forma de perlexpr é:
s / expr1 / expr2 / [gi]
… em que expr1 é uma expressão que descreve a sequência que você deseja substituir e expr2 é uma expressão que descreve a sequência que você deseja substituir. Por exemplo,
s / bobo / tolo /
… substituiria a primeira ocorrência da string ‘ bobo ‘ pela string ‘ tolo ‘.
Para executar a substituição global (ou seja, substituir expr2 por expr1 quantas vezes ocorre expr1 ), adicione o modificador g no final da expressão de substituição. Por exemplo:
s / bobo / tolo / g
… substituiria toda ocorrência de ‘ bobo ‘ por ‘ tolo ‘, não importa quantas vezes isso ocorra.
Para executar a correspondência de uma maneira que não diferencia maiúsculas de minúsculas, adicione um i no final da expressão de substituição. Por exemplo,
s / bobo / tolo / i
… substituiria ‘ SILLY ‘, ‘ Silly ‘ ou ‘ siLLY ‘ por ‘ tolo ‘.
Os modificadores g e i podem ser especificados na mesma expressão, para executar a substituição global que não diferencia maiúsculas de minúsculas, por exemplo:
s / bobo / tolo / soldado
Metacaracteres
Um metacaractere é um caractere (ou caracteres) que possui um significado especial. Eles podem ser usados em uma expressão para definir com precisão quais seqüências de caracteres devem ser correspondidas e substituídas.
Estes são alguns metacaracteres comuns que podem ser usados em uma expressão Perl:
metacaracteres | significado | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
^ | Corresponde ao início de uma sequência. | ||||||||||
$ | Corresponde ao final de uma sequência. | ||||||||||
. | Corresponde a qualquer caractere, exceto uma nova linha . | ||||||||||
* | Corresponde às ocorrências do caractere anterior, ou grupo de caracteres, zero ou mais vezes. | ||||||||||
+ | Corresponde às ocorrências do caractere anterior, ou grupo de caracteres, uma ou mais vezes. | ||||||||||
? | Corresponde às ocorrências do caractere anterior, ou grupo de caracteres, zero ou uma vez. Se usado após um modificador de repetição, ‘ ? ‘especifica que a menor correspondência possível deve ser usada. Por exemplo, ‘ a {2,4}? ‘corresponderá a’ aa ‘mesmo que’ aaa ‘e’ aaaa ‘também correspondam. Veja modificadores de repetição, abaixo. | ||||||||||
| | Alternação; comporta-se como um ‘ OU ‘ booleano . Por exemplo, ‘ manteiga | geléia ‘ combinará com manteiga ou geléia . | ||||||||||
( … ) | Agrupamento. Por exemplo, ‘ (por exemplo | le) gs ‘ corresponderá a ‘ ovos ‘ ou ‘ pernas ‘. | ||||||||||
[ … ] | Um conjunto de caracteres. Por exemplo, ‘ [abc] ‘ corresponderá a ‘ a ‘ ou ‘ b ‘ ou ‘ c ‘. Os conjuntos de caracteres podem ser definidos como:
| ||||||||||
{ m [ , [ n ]] } | Um modificador de repetição, que corresponde, pelo menos, m e no máximo n dos caracteres precedentes. Por exemplo, ‘ a {2} ‘ corresponderá a ‘ aa ‘, ‘ a {2,4} ‘ corresponderá a ‘ aa ‘, ‘ aaa ‘ ou ‘ aaaa ‘ e ‘ b {2,} ‘ corresponderá a dois ou mais caracteres b consecutivos . | ||||||||||
\ | Escapa um metacaractere para que seja tratado literalmente. Por exemplo, ‘ \ + ‘ corresponde a um literal ‘ + ‘ (em vez de o símbolo de mais ter seu significado especial de metacaractere). | ||||||||||
\ t | Corresponde a um caractere de tabulação. | ||||||||||
\ n | Corresponde a um caractere de nova linha. | ||||||||||
\ r | Corresponde a um caractere de retorno de carro . | ||||||||||
\W | Corresponde a qualquer caractere único classificado como caractere “palavra” ( caractere alfanumérico ou sublinhado ‘ _ ‘). | ||||||||||
\W | Corresponde a qualquer caractere que não seja “palavra”. | ||||||||||
\ s | Corresponde a qualquer caractere de espaço em branco único (espaço, guia, nova linha). | ||||||||||
\ S | Corresponde a qualquer caractere que não seja um espaço em branco. | ||||||||||
\ d | Corresponde a qualquer caractere de dígito. Essa opção é equivalente ao conjunto de caracteres ‘ [0-9] ‘ | ||||||||||
\ D | Corresponde a qualquer caractere que não seja um dígito. | ||||||||||
\ b | Uma asserção de “largura zero” que corresponde a qualquer “limite de palavras”. | ||||||||||
\ B | Uma asserção de “largura zero” correspondente a qualquer limite que não seja “palavra”. |
Tradução
A tradução é semelhante à substituição. Ele pode ser usado para converter uma string para outra, caractere por caractere. As expressões de tradução são especificadas da seguinte maneira:
y / charset1 / charset2 /
… onde cada caractere no conjunto charset1 , em ordem, está a ser traduzido para o personagem correspondente do conjunto de caracteres charset2 . (Esses conjuntos são exatamente como os conjuntos de caracteres acima, exceto que você não precisa colocá-los entre colchetes.) Por exemplo, a expressão de tradução:
y / abc / def /
… traduziria cada letra a para a letra d , todo b para um e , etc.
Isso também funciona para os conjuntos de caracteres definidos como intervalos. Por exemplo:
y / az / AZ /
Traduzia todas as letras minúsculas em seu equivalente maiúsculo.
Exemplos
renomeie / \ .jpeg $ /. jpg / '*
Renomeie todos os arquivos com a extensão ” .jpeg ” para que tenham a extensão ” .jpg “.
encontre -type f -name '* .jpg' | renomear 's / feriado / lua de mel /'
Para todos os arquivos com a extensão ” .jpg “, se eles contiverem a sequência ” feriado “, substitua-a por ” lua de mel “. Por exemplo, este comando renomeia o arquivo ” ourholiday001.jpg ” para ” ourhoneymoon001.jpg “.
Este exemplo também ilustra como usar o comando find para enviar uma lista de arquivos ( -tipo f ) com a extensão .jpg ( -name ‘* .jpg’ ) para renomear por meio de um canal ( | ). renomear então lê sua lista de arquivos a partir da entrada padrão.
renomear 's / \. bak $ //' * .bak
Renomeie todos os arquivos correspondentes a ” * .bak ” para remover o nome do arquivo de sua extensão. Por exemplo, este comando renomeia o arquivo ” project.bak ” para ” project “.
renomeie 'y / AZ / az /' *
Renomeie os arquivos para que todas as letras maiúsculas sejam alteradas para seus equivalentes em minúsculas.
Comandos relacionados
mv – Mova arquivos e diretórios de um local para outro e, opcionalmente, renomeie-os.
perl – Intérprete para a linguagem de programação Perl.