Tenho o Kubuntu 22.04. Existe algum programa, script, etc. no *buntu que possa renomear todos os arquivos em uma pasta com caracteres não latinos para seus equivalentes latinos? Por exemplo, tenho uma pasta que contém arquivos com nomes como:
Andúril
Dúnedain
Éomer
e preciso renomeá-los para:
Anduril
Dunedain
Eomer
De cabeça,
Text::Unidecode
o módulo Perl pode fazer isso (tecnicamente, ele tentará transliterar caracteres Unicode fora do intervalo ASCII para uma substituição ASCII adequada):O mais conveniente seria combinar isso com o
rename
utilitário baseado em Perl e fazer o seguinte:Isso executará um teste (nenhum nome de arquivo será alterado, mas o resultado da substituição para cada arquivo será exibido); se você estiver satisfeito com o resultado, remova o
-n
sinalizador:A
-u
opção é importante porque dirárename
ao Perl para tratar nomes de arquivos como strings codificadas em UTF-8.Meu recurso habitual para esse tipo de coisa é um programa chamado
detox
. Ele é empacotado no Ubuntu (e na maioria das outras distros Linux) em um pacote com o mesmo nome.O comportamento padrão do comando não fará exatamente o que você quer, já que o objetivo principal do comando é se livrar de metacaracteres de shell em nomes de arquivo, e a versão atual deixou de reduzir as coisas para ASCII, já que isso é, por definição, com perdas e os sistemas de arquivos modernos não têm problemas com nomes de arquivo UTF-8.
No entanto, no Debian, Ubuntu e muitas outras distros, ele ainda inclui as tabelas de tradução antigas que fazem essencialmente exatamente o que você quer. Em particular:
Fará exatamente o que você está pedindo, recursivamente para o diretório de trabalho atual. Remover o
-only
no terceiro argumento fará com que ele também transforme caracteres que seriam interpretados pelo shell (e, portanto, normalmente precisam ser escapados na linha de comando) em equivalentes seguros (geralmente_
).