Возникла необходимость переименовать кучу файлов с русскими названиями в
транслит. В ЛОР-ФАК нашел скрипт, который это делает.
Проблема в том, что там используется tr, который, как оказалось,
уникод не понимает (только у меня?), а у меня как раз локаль utf8. Пришлось его немного поменять:
$ cat /usr/bin/trl-u | iconv -f KOI8-R -t UTF-8
#!/bin/sh
# russian->translit
# GOST 16876-71
# locale UTF-8
shopt -s nullglob
for NAME in *
do
CNAME=$(echo $NAME | iconv -f UTF-8 -t KOI8-R)
TRS=`echo $CNAME | tr абвгдезиклмнопрстуфцы abvgdeziklmnoprstufcy` TRS=`echo $TRS | tr АБВГДЕЗИКЛМНОПРСТУФЦЫ ABVGDEZIKLMNOPRSTUFCY` TRS=${TRS//й/jj} TRS=${TRS//Й//JJ} TRS=${TRS//х/kh} TRS=${TRS//Х/KH} TRS=${TRS//ч/ch};
TRS=${TRS//Ч/CH} TRS=${TRS//ш/sh}; TRS=${TRS//Ш/SH} TRS=${TRS//ё/jo};
TRS=${TRS//Ё/JO} TRS=${TRS//ж/zh}; TRS=${TRS//Ж/ZH} TRS=${TRS//щ/shh}; TRS=${TRS//Щ/SHH} TRS=${TRS//э/eh};
TRS=${TRS//Э/EH} TRS=${TRS//ю/ju}; TRS=${TRS//Ю/JU} TRS=${TRS//я/ja}; TRS=${TRS//Я/JA} TRS=${TRS//ъ/\`};
TRS=${TRS//ъ\`} TRS=${TRS//ь/\'}; TRS=${TRS//Ь/\'}
if [[ `file -b "$NAME"` == directory ]]; then
mv -v "$NAME" "$TRS"
cd "$TRS"
"$0"
cd ..
else
mv -v "$NAME" "$TRS"
fi
done
То есть, смысл такой - сам файл скрипта записал в koi8-r + внутри
скрипта, прежде чем скормить имя файла tr'у, преобразовываю его в
koi8-r.
Так работает.
А теперь вопрос:
действительно не существует юникодного tr? И можно ли обойтись без
таких вот лишних телодвижений?
А может, вообще все у всех работало и так - тогда почему у меня не
работало?
П.С. Если у кого возникали проблемы со скриптом из ФАК'а в локали
utf8, то этот вариант - рабочий.
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [Zenity] Не выполняет отмену (2011)
- Форум Проблема с BASH скриптом в Synology при запуске в CRON, почему? (2021)
- Форум tr, непонятно (2013)
- Форум qt tr() (2007)
- Форум aterm -tr (2001)
- Форум QMessageBox + tr() = @#%^* (2005)
- Форум bash & tr & russian (2023)
- Форум *UMA-Uniformity-Tr (2016)
- Форум i18n || I18N_NOOP || tr ? (2005)
- Форум unicode (2005)