Программа / команда, помогающая переводить несколько имен файлов

У меня есть сотни файлов с разными именами , которые я хочу перевести на другой язык.

Существует ли действие приложения / CLI, которое позволило бы мне скопировать все эти имена, как в списке / таблице, а затем, после их перевода, вставить их обратно в список / таблицу, или это позволило бы процедуре несколько похож на «Переименовать» в Thunar, но с более сложным действием ближе к тому, что я описал?

(Я в Lubuntu и предпочитаю не использовать Nautilus из-за нежелательного вмешательства в рабочий стол LXDE / pcmanfm и LXPanel. Если в Наутилусе есть решение, пожалуйста, предоставьте его, но, если возможно, попробуйте найти альтернативу.)

5
задан 1 December 2012 в 14:21

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 онлайн .

0
ответ дан 1 December 2012 в 14:21

Другие вопросы по тегам:

Похожие вопросы: