Pesquisa de site

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.

  1. Explicação de “Tudo é um arquivo” e tipos de arquivos no Linux
  2. fswatch – Monitora alterações ou modificações de arquivos e diretórios no Linux
  3. Fasd – uma ferramenta de linha de comando que oferece acesso rápido a arquivos e diretórios
  4. 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.