Como faço para renomear todos os arquivos para letras minúsculas?
Eu tenho, por exemplo, TREE.wav, ONE.WAV. Eu quero renomear para tree.wav, one.wav. Como faço para renomear todos os arquivos para letras minúsculas?
— Voloda2
Você está confortável com uma solução Terminal / shell? Ou você deseja que o código C / Objective-C faça isso?
A solução do terminal estará ok.
— Voloda2,
Acho que isso deveria ser reaberto. o código do terminal também é código
— Danield
Esta deve ser uma questão válida no stackoverflow. Isso também é código.
— adev
Se você estiver confortável com o terminal:
Abra Terminal.app, digite cde arraste e solte na janela a pasta que contém os arquivos a serem renomeados.
Para confirmar que você está no diretório correto, digite lse pressione Enter.
Cole este código e pressione Enter:
Para confirmar que todos os seus arquivos estão em letras minúsculas, digite lse pressione Enter novamente.
(Obrigado a @bavarious no Twitter por algumas correções e obrigado a John Whitley abaixo por tornar isso mais seguro em sistemas de arquivos que não diferenciam maiúsculas de minúsculas.)
Seja cuidadoso. Se você tiver arquivos com o nome foo.txte FOO.TXT, isso pode destruir um deles.
Com o bash, você pode simplesmente fazer mv "$f" "${f,,}"declare -l g=$f; mv "$f" "$g"
Eu tentei todos esses comandos, obtive "mv: 'PPP.txt' e 'ppp.txt' são o mesmo arquivo" e não minúscula meu arquivo ... alguma idéia? É porque está no mesmo diretório?
— lorless
user2066039: Deve ser algo recente no Mac, porque a maioria das respostas com mais de um ano não conta para isso. Concluí a tarefa usando uma extensão intermediária como 'jpg1'. Portanto, JPG -> jpg1 -> jpg. Espero que ajude.
Os usuários do OS X devem renomear cada arquivo com um nome temporário primeiro devido ao sistema de arquivos que não diferencia maiúsculas de minúsculas, por exemplo: for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
A pergunta feita é geral e também importante, portanto, desejo fornecer uma resposta mais geral:
O caso mais simples (seguro na maioria das vezes e no Mac OS X, mas continue lendo):
Você também precisa lidar com espaços em nomes de arquivos (qualquer sistema operacional):
Você precisa lidar com segurança com nomes de arquivos que diferem apenas por maiúsculas e minúsculas em um sistema de arquivos com distinção entre maiúsculas e minúsculas e não sobrescrever o destino (por exemplo, Linux):
Nota sobre o Mac OS X:
O sistema de arquivos do Mac não faz distinção entre maiúsculas e minúsculas, preservando maiúsculas e minúsculas.
No entanto, não há necessidade de criar arquivos temporários, como sugerido na resposta e comentários aceitos, porque dois nomes de arquivo que diferem apenas por caso não podem existir em primeiro lugar, ref .
Para mostrar isso:
Sim - mas seu exemplo sugere que você pode usar nomes de arquivo em minúsculas usando 'mv X x'. Então foi só isso que eu comentei.
— cpaludan
mojave 10.14.5: # touch X x # ls -la total 0 -rw-r - r-- 1 root root 0 Jun 24 15:19 X # mv X x mv: 'X' e 'x' são iguais arquivo # ls -la -rw-r - r-- 1 root root 0 24 de junho 15:19 X
Desculpe pela formatação ruim. ASSIM não foi gentil comigo lá.
E meu mal - estava em um ssh no meu framboesa em uma unidade compartilhada (formatado hfsplus) - aí não funciona. Mas, localmente, no meu mac, sim.
para i em *; do j = $ (tr '[: superior:]' '[: inferior:]' <<< "$ i"); mv "$ i" "$ j"; trabalhou para mim na Catalina. Obrigado.