Um programa / comando para ajudar a traduzir vários nomes de arquivos

5

Tenho centenas de arquivos com nomes diferentes que quero traduzir em um idioma diferente.

Existe uma ação do aplicativo / CLI que me permite copiar todos esses nomes como em uma lista / tabela e depois, depois de tê-los traduzido, colá-los de volta na lista / tabela, ou permitir um procedimento um pouco semelhante a "Renomear" em Thunar, mas com uma ação mais complexa, mais próxima do que descrevi?

(Estou no Lubuntu e prefiro não usar o Nautilus devido a interferências indesejadas com o LXDE / pcmanfm desktop e LXPanel. Se houver uma solução no Nautilus, forneça-a, mas tente oferecer uma alternativa, se possível.)

    
por cipricus 23.11.2012 / 17:29

1 resposta

9

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 .

    
por user76204 30.11.2012 / 20:47