Вопрос или проблема
У меня Kubuntu 22.04. Есть ли программа, скрипт и т.д. в *buntu, которые могут переименовать все файлы в папке с нелатинскими символами в их латинский эквивалент? Например, у меня есть папка, содержащая файлы с такими именами:
Andúril
Dúnedain
Éomer
и мне нужно переименовать их в:
Anduril
Dunedain
Eomer
Сразу на ум приходит, что модуль Perl Text::Unidecode
может это сделать (технически он попытается транслитерировать символы Unicode вне диапазона ASCII в подходящую замену ASCII):
Представление почти всегда является попыткой транслитерации — т.е. передачи, римскими буквами, произношения, выраженного текстом в какой-то другой письменной системе.
sudo apt install libtext-unidecode-perl
Самое удобное, что вы можете объединить это с утилитой rename
, основанной на Perl, и сделать следующее:
rename -u utf8 -n 'BEGIN {use Text::Unidecode}; unidecode($_)' *
Это выполнит “сухой” запуск (имя файла не будет изменено, но результат замены для каждого файла будет отображаться); если вас устраивает результат, уберите флаг -n
:
rename -u utf8 'BEGIN {use Text::Unidecode}; unidecode($_)' *
Опция -u
важна, так как она указывает rename
/ Perl интерпретировать имена файлов как строки, закодированные в UTF-8.
% ls -la
totale 36
drwxrwxr-x 2 user user 32768 окт 15 19:53 .
drwxr-xr-x 42 user user 4096 окт 15 20:01 ..
-rw-rw-r-- 1 user user 0 окт 15 19:53 Andúril
-rw-rw-r-- 1 user user 0 окт 15 19:53 Dúnedain
-rw-rw-r-- 1 user user 0 окт 15 19:53 Éomer
% rename -u utf8 'BEGIN {use Text::Unidecode}; unidecode($_)' *
% ls -la
totale 36
drwxrwxr-x 2 user user 32768 окт 15 20:01 .
drwxr-xr-x 42 user user 4096 окт 15 20:01 ..
-rw-rw-r-- 1 user user 0 окт 15 19:53 Anduril
-rw-rw-r-- 1 user user 0 окт 15 19:53 Dunedain
-rw-rw-r-- 1 user user 0 окт 15 19:53 Eomer
.
Ответ или решение
Переименование файлов с нелатинскими символами в Unix-подобных системах
Введение
В операционных системах на базе Linux, таких как Kubuntu 22.04, работа с файлами, имеющими нелатинские символы, может представлять определенные сложности. Если у вас есть папка с файлами, содержащими такие символы, как в приведенном ниже примере:
- Andúril
- Dúnedain
- Éomer
и вы хотите переименовать их в версии, содержащие только латинские символы:
- Anduril
- Dunedain
- Eomer
Существует несколько подходов к решению этой задачи, один из которых основан на использовании модуля Perl Text::Unidecode
и утилиты rename
.
Установка необходимых инструментов
Для начала вам необходимо установить модуль Text::Unidecode
, который выполняет транслитерацию Символов Unicode в соответствующие им символы ASCII. Для этого выполните следующую команду в терминале:
sudo apt install libtext-unidecode-perl
Использование rename
После установки необходимого модуля, вы можете использовать Perl-базированную утилиту rename
для переименования файлов. Убедитесь, что вы находитесь в каталоге с файлами, которые нужно переименовать.
Пошаговые инструкции
-
Проверка имен файлов: Пожалуйста, выполните команду
ls -la
, чтобы убедиться, что файлы находятся в папке:ls -la
-
Тестовый запуск: Проведитесь тестовый запуск (
dry-run
), чтобы убедиться, что изменения соответствуют вашим ожиданиям, без фактического их применения. Используйте следующую команду:rename -u utf8 -n 'BEGIN {use Text::Unidecode}; unidecode($_)' *
Параметр
-n
гарантирует, что ни одно имя файла не будет изменено, и вы сможете увидеть, как каждый файл будет выглядеть после переименования. -
Производственное переименование: Если вы довольны исправлениями, вы можете убрать параметр
-n
, чтобы выполнить фактическое переименование:rename -u utf8 'BEGIN {use Text::Unidecode}; unidecode($_)' *
Результат
После выполнения команды вы должны увидеть, что файлы были переименованы. Например:
ls -la
# Результат
totale 36
drwxrwxr-x 2 user user 32768 ott 15 19:53 .
drwxr-xr-x 42 user user 4096 ott 15 20:01 ..
-rw-rw-r-- 1 user user 0 ott 15 19:53 Anduril
-rw-rw-r-- 1 user user 0 ott 15 19:53 Dunedain
-rw-rw-r-- 1 user user 0 ott 15 19:53 Eomer
Заключение
Используя указанные инструменты и команды, вы сможете эффективно переименовать файлы с нелатинскими символами в Kubuntu 22.04. Этот метод является надежным и может быть адаптирован для других сценариев, включая изменения в больших массивах файлов. Обязательно всегда выполняйте тестовый запуск перед внесением окончательных изменений, чтобы избежать потери данных.