我有数百个具有不同名称的文件 我想将其翻译成另一种语言。
是否存在一个应用程序/ CLI 操作,允许我将所有这些名称复制为列表/表格中的名称,然后在翻译它们之后将它们粘贴回列表/表格中,或者允许执行类似于 Thunar 中的“重命名”的过程,但操作更复杂,更接近我所描述的?
(我在 Lubuntu 中,并且我不喜欢使用 Nautilus,因为它会对 LXDE/pcmanfm 桌面和 LXPanel 造成不必要的干扰。如果 Nautilus 中有解决方案,请提供,但如果可能的话,请尝试提供替代方案。)
答案1
下面的脚本是受到另一个讨论的启发这里,使用translate-bin
,本相关项目中介绍的程序问题,并一次性翻译和重命名文件。它适合一次性批量翻译和重命名数百个文件。首先使用以下命令从存储库安装必要的程序:
sudo apt-get install libtranslate0 libtranslate-bin
该脚本当前设置为重命名任何带有扩展名的文件.txt
,但它可以处理您可能需要的任何文件:只需将所有实例更改为.txt
,.jpg
或.mp4
更改为您想要翻译的任何文件即可。
该脚本目前设置为将文件名从德语 (de) 翻译为法语 (fr),但您可以选择所-s
使用的服务 () 支持的任何语言;由于该翻译服务目前是 Google,因此提供多种语言。
打开文本编辑器,保存文件,然后使用 使其可执行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
您可以将脚本放在包含目标文件的文件夹中,然后执行它,或者将其放在您的~/bin
文件夹中,然后使用终端进入cd
包含文件的文件夹,并使用您指定的名称调用脚本。有关 bin 文件夹的更多信息,请参阅我的回答这里。
cd
下面是我打开终端并进入目标文件夹的示例:
在脚本运行之前,ls
返回德语的狗和猫:
Hund.txt Katze.txt
在终端中使用 执行该脚本后./scriptname
,输出的ls
是法语的狗和猫:
Chien.txt Chat.txt
在使用脚本之前最好备份文件,但如果sgghdsgsh.txt
发现无效的翻译目标,例如,无论设置了什么语言,脚本都不会执行任何操作。但是,为了防止它覆盖文件,我们可以添加-i
到mv
:如果单击并运行并且目标文件存在,则不会发生任何事情,但如果在终端中使用运行脚本./script
,则将要求您确认:
mv: `Cat.txt' and `Cat.txt' are the same file
mv: overwrite `Cat.txt'? n
我认为没有必要在脚本中添加任何其他检查,因此这应该令人满意。
有关该计划的更多选项,请访问man translate
或Ubuntu 在线手册页。