Os nomes dos arquivos copiados do dispositivo USB para o HDD ficaram todos em maiúsculas. Como corrigi-lo?

2

Atualmente estou usando o OpenBSD 5.5-release.

Sempre que copio arquivos ou diretórios do meu dispositivo USB para o disco rígido local, os nomes dos arquivos copiados ficam todos em letras maiúsculas.

O que causa isso?

Como faço para corrigir isso?

    
por user66229 08.08.2014 / 11:18

2 respostas

3

Você pode consertá-lo (toda vez que isso acontece) com este comando:

find local_directory_name -depth -exec sh -c 'dir="$(dirname "$0")"; FILE="$(basename "$0")"; lowfile="$(echo "$FILE" | tr "A-Z" "a-z")"; if [ "$lowfile" != "$FILE" ]; then mv "$0" "$dir/$lowfile"; fi' {} ";"

Digite tudo isso como uma linha (substituindo local_directory_name com o nome do diretório para o qual você copiou os arquivos). Você pode dividi-lo em várias linhas inserindo barras invertidas. Ou você pode colocar a parte depois de sh -c em um arquivo de script.

Enumera todos os arquivos no diretório (incluindo subdiretórios, recursivamente) e executa os comandos dados em cada um. -depth faz o trabalho "bottom-up", então processa todas as entradas em um diretório antes de processar (renomear) o próprio diretório. Cada nome de arquivo (caminho relativo a partir de local_directory_name ) é dividido em uma parte do diretório e um nome de arquivo simples (apenas o componente inferior). Em seguida, o nome do arquivo é convertido de maiúsculas para minúsculas. Se isso for diferente do nome do arquivo existente, ele renomeia o arquivo para o nome minúsculo. Eu adicionei essa verificação para evitar que as mensagens de diagnóstico que você de tentar renomear um arquivo para si mesmo, o que aconteceria se você tivesse um arquivo cujo nome não continha letras (isto é, numerais e caracteres especiais apenas). Ou, nesse caso, se você tivesse um arquivo cujo nome não continha letras maiúsculas .

Considerações finais: Outra maneira de evitar erros de mv 123 123 é adicionar -name "*[A-Z]*" após -depth , que informa find para processar apenas nomes que contenham pelo menos uma letra maiúscula.

    
por 09.08.2014 / 00:12
4

Você mencionou que está usando o sistema de arquivos FAT32. O FAT, bem como o NTFS, são FSs insensíveis a maiúsculas e minúsculas. Estou assumindo que o driver faz maiúsculas apenas para garantir que não haja um arquivo > 1 no diretório com o mesmo nome (embora com caixa diferente).

O problema que você descreve já existe há algum tempo. Veja este tópico de 2008, por exemplo.

Eu sugiro usar um FS diferente ou usar arquivos TAR em seus drives FAT / NFTS para manter o revestimento.

    
por 08.08.2014 / 14:42