Сама смена локали порблем не вызывает - dpkg-reconfigure locales и всё. С этим просто. Но дело в том, что имена всех файлов остаются в koi8-r. Тут пришлось немного поковыряться.
Первое, за что взялся - за колекцию музыки. Есть такая замечательная утилита EasyTag. Давно пользуюсь ей(все теги у меня уже давно в UTF). Она же умеет менять имена файлов в соответствии с тегами.
А вот для всех остальных файлов пришлось наваять маленький скриптик.
Для начала, копирую все файлы, которые надо переименовать в отдельную директорию. Далее, создаю временный файл с листингом этой директории:
ls -1 tmpdir/ > tmpfileЭтот файл надо слегка обработать. ls добавляет туда неотображаемые символы, которые в скрипте обрабатывать мне показалось сложновато. Я их просто убрал с помощью vim. В командном режиме:
%s/\e\[0m//gТеперь собственно скрипт:
#!/bin/bash
#
STRN=$2
for((i=1;i<=$STRN;i++)) do
# Получаем каждое определённое имя файла в UTF по очереди.
UTFNAME=`cat tmpfile | iconv -f koi8-r -t utf-8 | tail -n ${i} | head -n 1`
# Получаем каждое отдельное текущее имя файла
KOI8NAME=`ls -1 ${1} | tail -n ${i} | head -n 1`
rename ${1}"${KOI8NAME}" new/"$UTFNAME"
done
Число STRN - количество файлов из листинга. Это число можно получить с помощью cat -n tmpfile. Директорию new создал руками. Всё. После отработки скрипта(в качестве первого аргумента даём ему tmpdir, а второго -количество файлов), в new будут лежать все наши файлики с именами в utf-8.
P.S. Перемещать файлы, предназначенные для переименования во временную директорию надо только с помощью cp! Никаких mc.
Update: В обсуждении этого способа на welinux.ru подсказали, что есть утилита convmv. Вердикт - гуглите, перед тем, как браться за что-то! :)
Update2: Оказывается всё ещё проще. В Debian есть пакет, специально предназначенный для смены локали на utf-8: utf8-migration-tool
Комментариев нет:
Отправить комментарий