Ensina três maneiras de renomear arquivos rapidamente em lotes

Em nossa vida profissional, sejam programadores ou não programadores, encontraremos um requisito, ou seja, renomear um monte de arquivos. Existem muitos softwares excelentes no Windows que podem nos ajudar a cumprir esse requisito e, no ambiente Linux, podemos simplesmente digitar algum código para preencher esse requisito.

Este artigo Liang Xu irá apresentar os três métodos mais básicos de renomeação de arquivos, porque são relativamente básicos, então drivers antigos podem parar por aqui.

1. renomear o comando

Como o nome indica, o comando rename é usado para renomear o nome do arquivo. O comando rename tem uma função muito poderosa e podemos usá-lo para modificar vários nomes de arquivos complexos. No entanto, este artigo apenas apresenta suas funções mais básicas, e a renomeação de outras funções de renomeação poderosas será atualizada posteriormente. O formato mais básico de renomeação é o seguinte:

rename 源字符串 目标字符串 文件

Entre eles, a string de origem representa a string que o nome do arquivo original precisa ser substituído, que pode ser todo ou parte do nome do arquivo original; a string de destino é a string a ser substituída; o arquivo é uma lista de arquivos cujo nome de arquivo precisa ser alterado, que pode ser um ou mais 1.

Se o diretório agora é uma pilha de atb_mod_01.cpp,atb_mod_02.cpp,atb_mod_03.cpp,atb_mod_04.cppdocumentos e outras formas de nossas necessidades é o nome do arquivo modalterado adb, o comando para completar este requisito da seguinte maneira:

[alvin@VM_0_16_centos exp3]$ ls
atb_mod_01.cpp  atb_mod_02.cpp  atb_mod_03.cpp  atb_mod_04.cpp
[alvin@VM_0_16_centos exp3]$ rename mod adb *
[alvin@VM_0_16_centos exp3]$ ls
atb_adb_01.cpp  atb_adb_02.cpp  atb_adb_03.cpp  atb_adb_04.cpp

2. Comando mv com loop for

Se agora temos um monte de .txtarquivos, queremos alterar seus sufixos .cpp. Primeiro, olhe para o código completo:

#!/bin/bash

for name in `ls *.txt`
do
    mv $name ${name%.txt}.cpp
done

Todos nós sabemos que o comando mv é usado para renomear no Linux, então a renomeação em lote irá naturalmente pensar em aninhar comandos mv com instruções de loop.

Aqui, usamos ls *.txttodos os arquivos txt no diretório atual para listá-los todos, um por um e então prosseguir com a operação de ciclo de variável de nome.

No corpo do loop, usamos o comando mv para renomear. Aqui, usamos ${name%.txt}esta string de abordagem que indica o início da cauda removida do nome com .txta menor correspondência parcial e retorna a parte restante. Depois disso, juntamente com o .cppsufixo. Por meio dessa operação, podemos alterar o sufixo do nome do arquivo de .txt para .cpp. Finalmente, usamos o comando mv para realmente alterar o nome do arquivo.

3. comando sed com loop for

Se agora temos um monte de arquivos, o formato do nome do arquivo test01.txt,test02.txt,test03.txt,test04.txté a primeira parte em inglês, a segunda metade é digital. Agora queremos renomear o arquivo para test-01.txteste formulário. Desta vez, usamos o comando sed para completar este requisito.

Vamos dar uma olhada no código completo primeiro.

#!/bin/bash

for file in `ls *.txt`
do
     newFile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'`
     mv $file $newFile
done

Como antes de usar ls \*.txtpara obter todos os .txtarquivos. Em seguida, use o comando echo para exibi-los sequencialmente como a entrada do comando sed.

Em seguida, a parte chave é alcançada. À primeira vista, o comando do sed pode parecer um pouco assustador, mas o driver antigo está acostumado a ele há muito tempo. O conteúdo nas crases é, na verdade, esta estrutura básica:

s/ 原字符串 / 替代的字符串 /

Aqui, usamos o pacote correspondente, ou seja, as expressões de string originais entre colchetes são agrupadas de acordo com um determinado tempo e, em seguida, de volta \1,\2,\3……para a frente do pacote de referência, em que a string alternativa se junta no formato apropriado.

Qian Wenyi disse, o nome do arquivo original é parte em inglês e o número da peça antes de depois de constituído, o inglês pode ser [a-z]+expresso com números podem ser [0-9]+representados. Tenha cuidado para não esquecer o sinal de mais, o que significa várias repetições dos caracteres anteriores. Então, usamos \ 1 e \ 2 para citar as partes correspondentes na frente e, em seguida, conectá-las com barras transversais, de modo que seja assim:

s/([a-z]+)([0-9]+)/\1-\2/

Como os colchetes e o sinal de mais podem ter significados diferentes em diferentes Shells, um caractere de escape deve ser adicionado antes dele para que se torne o que você viu antes.

Depois disso, use o comando mv para concluir a ação de renomear.

Finalmente, recentemente, muitos amigos me pediram um roteiro de aprendizagem do Linux , então, com base na minha experiência, passei um mês ficando acordado até tarde em meu tempo livre e compilei um e-book. Quer você esteja em uma entrevista ou em auto-aperfeiçoamento, acredito que isso o ajudará! O diretório é o seguinte:

Dê a todos de graça, basta pedir que você me dê um polegar para cima!

Ebook | Roteiro de aprendizagem de desenvolvimento Linux

Espero também que alguns amigos possam se juntar a mim para tornar este e-book mais perfeito!

Ganho? Espero que os ferros antigos tenham um combo de três golpes para que mais pessoas possam ler este artigo

Leitura recomendada:

Acho que você gosta

Origin blog.csdn.net/yychuyu/article/details/108520953
Recomendado
Clasificación