como renomear vários arquivos Ao Mesmo Tempo no Linux
renomear vários arquivos no Linux parece uma tarefa simples, mas pode ficar bastante complexo. É possível renomear arquivos em massa com o comando mv
e um pouco de script Bash, ou usar os utilitários mmv
e rename
– que normalmente não são instalados por padrão. Neste guia, mostraremos vários exemplos para renomear vários arquivos de uma só vez a partir da linha de comando do Linux.
renomeie vários arquivos com mv
o comando mv
é uma parte padrão do Linux e pode ser usado para renomear vários arquivos, mas um pouco de script é necessário para fazer o trabalho. Alguns exemplos também dependem de outros utilitários Linux padrão, como ls
, find
, xargs
, etc.
exemplo 1. Altere todos os nomes de arquivos para minúsculas.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Exemplo 2. Altere todos os nomes de arquivo para maiúsculas.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
exemplo 3. Altere todas as extensões de arquivo de .jpeg
para .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
exemplo 4. Remova a extensão de arquivo .bak
de todos os arquivos.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
exemplo 5. Adicione uma extensão de arquivo .bak
a todos os arquivos.
$ for f in `ls`; do mv $f $f.bak; done
exemplo 6. Use xargs
para anexar “_backup” a cada arquivo.
$ ls * | xargs -I{} mv {} {}_backup
exemplo 7. Use os comandos find
, sed
e mv
para alterar todos os arquivos para minúsculas.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
exemplo 8. Use os comandos find -exec
e mv
para anexar “_backup” a cada arquivo que termina na extensão .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
exemplo 9. Semelhante ao exemplo anterior, mas substitua a opção -exec
do find por xargs
para anexar “_backup” a cada arquivo que termina na extensão .log
.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
exemplo 10. Substitua um padrão em cada arquivo usando mv
e sed
. Isso substituirá “IMG” por “férias” em cada arquivo .jpg
.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
exemplo 11. Adicione o carimbo de data / hora atual a todos os arquivos que terminam em .log
. Isso mudaria um arquivo como access.log
para access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
renomeie vários arquivos com renomear
o utilitário renomear torna nossas tarefas de renomeação em massa um pouco mais fáceis, mas o utilitário nem sempre é instalado por padrão. Use o comando apropriado abaixo para instalá-lo com o Gerenciador de pacotes do seu sistema.
Ubuntu, Debian e no Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS, e RHEL:
$ sudo dnf install prename
Arch Linux e Manjaro:
$ sudo pacman -S perl-rename
-n
opção rename
comandos de se pretender pré-visualizar as alterações antes de fazê-los.exemplo 1. Altere todos os nomes de arquivos para minúsculas.
$ rename 'y/A-Z/a-z/' *
Exemplo 2. Altere todos os nomes de arquivo para maiúsculas.
$ rename 'y/a-z/A-Z/' *
exemplo 3. Retire a extensão .bak
de todos os arquivos.
$ rename 's/\.bak$//' *.bak
exemplo 4. Altere a extensão de todos os arquivos .jpeg
para .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
exemplo 5. Altere a extensão em maiúsculas .JPG
para minúsculas .jpg
para todos os arquivos.
$ rename 's/\.JPG/\.jpg/' *.JPG
exemplo 6. Remova espaços em branco de todos os nomes de arquivos.
$ rename "s/ *//g" *
exemplo 7. Substitua espaços em branco por sublinhados para todos os nomes de arquivos.
$ rename 's/\s+/_/g' *
exemplo 8. Capitalize a primeira letra de todos os nomes de arquivos.
$ rename 's/\b(\w)/\U/g' *
exemplo 9. Substitua um padrão em cada nome de arquivo. Este comando substituirá “IMG” por “férias” em cada arquivo .jpg
.
$ rename 's/IMG/Vacation/' *.jpg
exemplo 10. Exclua parte do nome de um arquivo. Este comando removerá “IMG_” de cada arquivo .jpg
.
$ rename 's/IMG_//' *.jpg
exemplo 11. Anexe a extensão .bak
a todos os arquivos.
$ rename 's/(.*)/.bak/' *
renomeie vários arquivos com mmv
o utilitário mmv se destaca em Renomear arquivos com base em padrões, como remover ou adicionar strings a todos os arquivos ou reorganizar partes de nomes de arquivos. Geralmente não é instalado por padrão, mas você pode usar o comando apropriado abaixo para instalar o mmv com o Gerenciador de pacotes do seu sistema.
Ubuntu, Debian e no Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS, e RHEL:
$ sudo dnf install mmv
Arch Linux e Manjaro (instalar a partir do AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
opção mmv
comandos de se pretender pré-visualizar as alterações antes de fazê-los.exemplo 1. Altere a extensão de todos os arquivos .jpeg
para .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Exemplo 2. Altere todos os nomes de arquivos para minúsculas.
$ mmv '*' '#l1'
exemplo 3. Altere todos os nomes de arquivo para maiúsculas.
$ mmv '*' '#u1'
exemplo 4. Reorganize partes de um nome de arquivo. Este comando mudará arquivos de música com padrão Song-Artist.mp3
para Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
exemplo 5. Substitua a primeira ocorrência de “IMG” por “férias” em todos os nomes de arquivos.
$ mmv '*IMG*' '#1Vacation#2'
exemplo 6. Adicione um prefixo a cada nome de arquivo. Este comando adicionará “backup_” a cada arquivo .log
.
$ mmv '*.log' 'backup_#1.log'
exemplo 7. Adicione um sufixo a cada nome de arquivo. Este comando anexará “_backup” a cada arquivo .log
.
$ mmv '*.log' '#1.log_backup'
exemplo 8. Remova o prefixo” IMG_ ” de todos os arquivos .jpg
.
$ mmv 'IMG_*.jpg' '#1'
exemplo 9. Remova o sufixo” _old ” de todos os arquivos.
$ mmv '*_old' '#1'
renomear arquivos em massa via GUI
se a linha de comando não é realmente sua coisa, é possível renomear vários arquivos de uma só vez via GUI. Uma das melhores ferramentas para fazer o trabalho é o aplicativo de renomeação em massa que vem com o Thunar.
Thunar é o navegador de arquivos padrão para Xfce, mas você pode instalá-lo independentemente do ambiente de trabalho que você está usando. Se você já estiver usando Xfce ou Thunar, a renomeação em massa já faz parte do seu sistema. Caso contrário, use o comando apropriado abaixo para instalá-lo com o Gerenciador de pacotes do seu sistema.
Ubuntu, Debian e no Linux Mint:
$ sudo apt install thunar
Fedora, AlmaLinux, CentOS, e RHEL:
$ sudo dnf install thunar
Arch Linux e Manjaro:
$ sudo pacman -S thunar
Passo 1. Depois que o Thunar estiver instalado, Procure e abra o Utilitário de renomeação em massa.
Etapa 2. Clique no sinal de mais para adicionar arquivos que você gostaria de renomear.
Etapa 3. Escolha na lista de opções o que você gostaria de fazer com os arquivos. Você pode alterá-las todas a letras maiúsculas ou minúsculas, adicionar uma data e hora, inserir texto em uma determinada posição, adicionar numeração automática, substituir caracteres, ou pesquisar e substituir certos padrões nos nomes de arquivo, entre outras coisas. No exemplo abaixo, anexamos uma extensão de arquivo .txt
a todos os nossos arquivos.
Etapa 4. Quando estiver satisfeito com as alterações de nome pré-visualizadas na coluna “Novo Nome”, clique em “Renomear arquivos” para executar a renomeação em massa.
renomeando vários arquivos no Wsl
se você estiver usando o subsistema do Windows Para Linux, alguns comandos acima não funcionarão, particularmente aqueles que envolvem alterar arquivos para minúsculas ou maiúsculas. O Windows não diferencia maiúsculas de minúsculas, portanto considera File.txt
, file.txt
e FILE.txt
o mesmo arquivo.
você simplesmente receberá um erro de que o arquivo já existe se tentar renomear FILE.txt
para file.txt
. Para evitar esse problema, use um dos exemplos a seguir.
exemplo 1. Altere a extensão em maiúsculas .JPG
para minúsculas .jpg
para todos os arquivos (usando utilitários padrão).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Exemplo 2. Altere a extensão em maiúsculas .JPG
para minúsculas .jpg
para todos os arquivos (usando o utilitário renomear).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
exemplo 3. Altere a extensão em maiúsculas .JPG
para minúsculas .jpg
para todos os arquivos (usando o utilitário mmv).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
exemplo 4. Altere todos os nomes de arquivos para minúsculas (usando utilitários padrão).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
exemplo 5. Altere todos os nomes de arquivos para minúsculas (usando o utilitário mmv).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
conclusão
é possível usar utilitários Bash padrão para toda a sua renomeação em massa no Linux, mas as ferramentas renomear e mmv tornam muito mais fácil. Também podemos usar o aplicativo de renomeação em massa do Thunar quando preferimos usar GUI sobre a linha de comando. Os exemplos neste guia abrangem uma ampla gama de cenários de renomeação e podem ser facilmente adaptados para atender a outras necessidades.