帮助翻译多个文件名的程序/命令

5 command-line rename batch-rename

我有数百个不同名称的文件 ,我想将它们翻译成不同的语言。

是否有应用程序/CLI 操作允许我将所有这些名称复制到列表/表中,然后在翻译它们后将它们粘贴回列表/表中,或者允许类似于“的过程”重命名”在 Thunar 中,但更复杂的动作更接近我所描述的?

(我在 Lubuntu 中,由于对 LXDE/pcmanfm 桌面和 LXPanel 的不必要干扰,我不想使用 Nautilus。如果 Nautilus 中有解决方案,请提供它,但如果可能,请尝试提供替代方案。)

小智 10

下面的脚本,其灵感来自不同的讨论here,使用translate-bin此相关问题中的程序,并一次性翻译和重命名您的文件。它适用于一次性批量翻译和重命名数百个文件。首先从存储库安装必要的程序:

sudo apt-get install libtranslate0 libtranslate-bin
Run Code Online (Sandbox Code Playgroud)

该脚本当前设置为重命名带有扩展名的任何文件.txt,但它可以处理您可能想要的任何文件:只需将.txtto 的所有实例更改为.jpg.mp4或者在您想要翻译它们时更改为您希望的任何文件。

该脚本当前设置为将文件名从德语 (de) 翻译为法语 (fr),但您可以选择-s所使用的服务 ( )支持的任何语言;由于该翻译服务目前是谷歌,因此提供多种语言。

打开文本编辑器,保存文件,然后使用 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
Run Code Online (Sandbox Code Playgroud)

您可以将脚本放在目标文件所在的文件夹中然后执行它,或者将它放在您的~/bin文件夹中然后使用终端来执行cd转到包含文件的文件您给它的名称调用脚本。有关 bin 文件夹的更多信息,请在此处查看我的回答。

这是我打开终端和 cd目标文件夹:

在脚本运行之前,ls以德语返回狗和猫:

Hund.txt  Katze.txt
Run Code Online (Sandbox Code Playgroud)

在终端中执行脚本后./scriptname,输出是ls法语中的狗和猫:

Chien.txt Chat.txt
Run Code Online (Sandbox Code Playgroud)

最好在使用脚本之前备份您的文件,但如果sgghdsgsh.txt找到无效的翻译目标,则无论设置什么语言,脚本都不会执行任何操作。但是,为了防止它覆盖文件,我们可以添加-imv:如果点击并运行和目标文件存在,什么也不会发生,但如果脚本在终端中运行有./script,然后你会被要求确认:

mv: `Cat.txt' and `Cat.txt' are the same file                                  
mv: overwrite `Cat.txt'? n  
Run Code Online (Sandbox Code Playgroud)

我认为没有必要在脚本中添加任何其他检查,因此应该令人满意。

有关该程序的更多选项,请访问man translateUbuntu 联机帮助页