Renomeie todos os arquivos e nomes de diretório para letras minúsculas no Linux
Em nosso artigo anterior, descrevemos como contar o número de arquivos e subdiretórios dentro de um determinado diretório. Este guia mostrará como renomear todos os nomes de arquivos e diretórios para letras minúsculas no Linux.
Leia também: Como descobrir os principais diretórios e arquivos (espaço em disco) no Linux
Existem várias maneiras de conseguir isso, mas explicaremos dois dos métodos mais eficientes e confiáveis. Para os fins deste guia, usamos um diretório chamado Arquivos
que possui a seguinte estrutura:
find Files -depth
1. Usando find, xargs e renomear comandos juntos
rename é um utilitário de linha de comando simples para renomear vários arquivos de uma vez no Linux. Você pode usá-lo junto com o utilitário find para renomear todos os arquivos ou subdiretórios em um diretório específico para letras minúsculas, como segue:
find Files -depth | xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/' {} \;
Explicação das opções usadas no comando acima.
-profundidade
– lista o conteúdo de cada diretório antes do próprio diretório.-n 1
– instrui xargs a usar no máximo um argumento por linha de comando da saída find.
Exemplo de saída após renomear arquivos e subdiretórios para letras minúsculas no diretório Arquivos
.
Outra forma alternativa de usar os comandos find e mv em um script conforme explicado abaixo.
2. Usando comandos find e mv em Shell Script
Primeiro crie seu script (você pode nomeá-lo como preferir):
cd ~/bin
vi rename-files.sh
Em seguida, adicione o código abaixo nele.
#!/bin/bash
#print usage
if [ -z $1 ];then
echo "Usage :$(basename $0) parent-directory"
exit 1
fi
#process all subdirectories and files in parent directory
all="$(find $1 -depth)"
for name in ${all}; do
#set new name in lower case for files and directories
new_name="$(dirname "${name}")/$(basename "${name}" | tr '[A-Z]' '[a-z]')"
#check if new name already exists
if [ "${name}" != "${new_name}" ]; then
[ ! -e "${new_name}" ] && mv -T "${name}" "${new_name}"; echo "${name} was renamed to ${new_name}" || echo "${name} wasn't renamed!"
fi
done
echo
echo
#list directories and file new names in lowercase
echo "Directories and files with new names in lowercase letters"
find $(echo $1 | tr 'A-Z' 'a-z') -depth
exit 0
Salve e feche o arquivo, torne o script executável e execute-o:
chmod +x rename-files.sh
rename-files.sh Files #Specify Directory Name
Você também pode gostar de ler os seguintes artigos relacionados.
- Explicação de “Tudo é um arquivo” e tipos de arquivos no Linux
- fswatch – Monitora alterações ou modificações de arquivos e diretórios no Linux
- Fasd – uma ferramenta de linha de comando que oferece acesso rápido a arquivos e diretórios
- FSlint – Como encontrar e remover arquivos duplicados no Linux
Neste guia, explicamos como renomear todos os arquivos e diretórios para letras minúsculas no Linux. Se houver algum erro, entre em contato conosco por meio do formulário de feedback abaixo. Você também pode nos oferecer outros métodos para fazer o mesmo.