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

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

Существует ли действие приложения /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 онлайн.

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