Como usar o Bash para alterar a extensão do arquivo de vários arquivos em uma pasta

Como usar o Bash para alterar a extensão do arquivo de vários arquivos em uma pasta
Este tutorial discutirá uma maneira rápida de usar o Bash para renomear arquivos de uma extensão específica para outro. Usaremos um loop de bash, encontrar, renomear, e o comando MV para este.

Método 1: Bash Loop

A maneira mais comum de alterar as extensões de arquivo recursivamente em um diretório é usar uma festa para loop. Podemos levar o usuário a inserir o diretório de destino, a extensão antiga e a nova extensão de renomear usando um script de bash.

Etapa 1: Monte o script
Vamos começar a montar o script. A primeira parte que precisamos é obter o diretório de destino. Para isso, podemos lidar com:

#!/BIN/BASH
eco "Entre no diretório de destino"
Leia Target_dir
CD $ Target_dir
eco "Digite a extensão do arquivo para pesquisar sem ponto"
Leia Old_Ext
eco "Digite a nova extensão de arquivo para renomear sem ponto"
Leia new_ext
eco "$ Target_dir, $ old_ext, $ new_ext"

O script acima solicitará ao usuário que o diretório processe e depois CD no diretório SET.

Em seguida, obtemos a extensão antiga sem o ponto (.); Finalmente, obtemos a nova extensão para renomear os arquivos.

Agora vamos processar os arquivos. Por esta; Podemos implementar uma regra simples que pesquise recursivamente os arquivos como:

para arquivo em *.$ old_ext
fazer
MV -V "$ FILE" "$ FILE%.$ old_ext.$ new_ext "
feito;

O loop for acima pesquisará o diretório aprovado por todos os arquivos com a extensão antiga e os renomeará para a nova extensão.

Para ficar detalhado, usamos o comando MV com -v. Você pode suprimir essa saída substituindo o sinalizador -v por -

Etapa 2: Execute o script
Agora, vamos colocar o script à prova. O script final está abaixo:

#!/BIN/BASH
eco "Entre no diretório de destino"
Leia Target_dir
CD $ Target_dir
eco "Digite a extensão do arquivo para pesquisar sem ponto"
Leia Old_Ext
eco "Digite a nova extensão de arquivo para renomear sem ponto"
Leia new_ext
eco "$ Target_dir, $ old_ext, $ new_ext"
para arquivo em *.$ old_ext
fazer
MV -V "$ FILE" "$ FILE%.$ old_ext.$ new_ext "
feito;

Neste teste, usaremos o diretório /var /log e renomearemos todos os .Log Arquivos para .Bak. Aqui estão o conteúdo do diretório antes de executar o script.

$ ls l/var/log/| grep .registro

Agora, vamos executar o script.

$ chmod +x extensões.sh
$ sudo ./extensões

A captura de tela acima mostra o script processando os arquivos e renomeando todos os arquivos com .log para .Bak.

Como este é um script interativo, ele é útil quando você não deseja codificar a extensão.

A seguir, o conteúdo do diretório /var /log após o script.

$ ls -l/var/log/| grep .Bak

Para reverter as mudanças, mude a extensão antiga para .Bak e a nova extensão como .registro

Método 2: Renomear comando

Se você não tiver vontade de trabalhar com um script, poderá usar a ferramenta Renomear para alterar as extensões de arquivo recursivamente.

Para instalar renomear, use o comando:

$ sudo apt -get install renomear -y

Depois de instalado, você pode usar o comando renomear como:

# Altere para o diretório de destino
cd/var/log/
# Alterar extensão
Sudo renomear 's/\.registro/.bak/' *.registro

Para reverter as mudanças, mude o .bak para .log e vice -versa.

$ sudo renomear 's/\.bak/.registro/' *.Bak

Método 3: Comando MMV

Você também pode usar o comando MMV que permite mover vários arquivos simultaneamente. Instale o MMV com o comando:

$ sudo apt-get install mmv

Para renomear arquivos com o comando MMV:

$ cd/var/log/
mmv "*.CSV ""#1.xls "

O número 1 move os arquivos para o diretório atual. Depois de executar o comando, ele renomeará tudo .Arquivos de log para a extensão especificada.

Resumindo

Este artigo discutiu vários métodos que você pode renomear recursivamente as extensões de arquivos em um diretório específico. No entanto, é bom observar que você pode implementar estratégias que não sejam as discutidas neste guia.

Obrigado pela leitura e lembre -se de compartilhar!