O script abaixo, inspirado por uma discussão diferente aqui , usa translate-bin
, o programa apresentado nesta pergunta , e traduz e renomeia seus arquivos uma só vez. É adequado para traduzir em lote e renomear centenas de arquivos de uma só vez. Primeiro instale os programas necessários dos repositórios com:
sudo apt-get install libtranslate0 libtranslate-bin
O script está atualmente configurado para renomear os arquivos com a extensão .txt
, mas funcionará com qualquer coisa que você queira: basta alterar todas as instâncias de .txt
para .jpg
, .mp4
ou para quaisquer arquivos você deseja quando quiser traduzi-los.
O script está atualmente configurado para traduzir nomes de arquivos de alemão (de) para francês (fr), mas você pode escolher qualquer idioma que seja suportado pelo serviço ( -s
) sendo usado; e como esse serviço de tradução é atualmente o Google, há muitos idiomas disponíveis.
Abra seu editor de texto, salve o arquivo e torne-o executável com chmod u+x myscript
.
#!/bin/bash
for i in *.txt
do
mv -i "$i" "$(echo ${i%.txt} | translate-bin -s google -f de -t fr).txt";
done
Você pode colocar o script na pasta com os arquivos de destino e depois executá-lo ou colocá-lo na sua pasta ~/bin
e, em seguida, usar o terminal para cd
na pasta com os arquivos e chamar o script com o nome que você deu. Para mais informações sobre a pasta bin, veja minha resposta aqui .
Aqui está um exemplo em que eu abro o terminal e cd
na pasta de destino:
Antes de o script ser executado, ls
retornará dog e cat em alemão:
Hund.txt Katze.txt
e depois que o script foi executado no terminal com ./scriptname
, a saída de ls
é cão e gato em francês:
Chien.txt Chat.txt
Provavelmente, é melhor fazer backup dos arquivos antes de usar o script, mas se um destino de tradução inválido, como sgghdsgsh.txt
, for encontrado, o script não fará nada, independentemente dos idiomas definidos. No entanto, para evitar que sobrescrevamos arquivos, podemos adicionar -i
a mv
: se clicado e executado e o arquivo de destino existir, nada acontecerá, mas se o script for executado no terminal com ./script
, você será pediu para confirmar:
mv: 'Cat.txt' and 'Cat.txt' are the same file
mv: overwrite 'Cat.txt'? n
Eu não acho necessário colocar outras verificações no script, então isso deve ser satisfatório.
Para mais opções para o programa estão disponíveis em man translate
ou nos Manpages do Ubuntu online .