У меня есть сотни файлов с разными именами , которые я хочу перевести на другой язык.
Существует ли действие приложения / CLI, которое позволило бы мне скопировать все эти имена, как в списке / таблице, а затем, после их перевода, вставить их обратно в список / таблицу, или это позволило бы процедуре несколько похож на «Переименовать» в Thunar, но с более сложным действием ближе к тому, что я описал?
(Я в Lubuntu и предпочитаю не использовать Nautilus из-за нежелательного вмешательства в рабочий стол LXDE / pcmanfm и LXPanel. Если в Наутилусе есть решение, пожалуйста, предоставьте его, но, если возможно, попробуйте найти альтернативу.)
Сценарий, приведенный ниже, который был вдохновлен другим обсуждением здесь , использует 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 онлайн .