Программа / команда, помогающая переводить несколько имен файлов
У меня есть сотни файлов с разными именами, которые я хочу перевести на другой язык.
Существует ли действие приложения /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 онлайн.