Форум — General ТРАНСЛИТ. Решение вопроса по перекодировке имен файлов. 0 0 Если кому интересно, решение вопроса по перекодировке имен файлов из кирилицы в транслит здесь: http://www.linux.org.ru/jump-message.jsp?msgid=973770 Ссылка
Поторопился.. Выдет вот такую ошибку. Чтобы это могло значить?? cheezee@ubuntu:~$./translit.sh ./translit.sh: line 8: syntax error near unexpected token `then' ./translit.sh: line 8: `TRS=`echo $NAME | tr абвгдезийклмнопрстуфхцы abvgdezijklmnoprstufhcy` TRS=`echo $TRS | tr АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ ABVGDEZIJKLMNOPRSTUFXCY` 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//щ/sh\'}; TRS=${TRS//Щ/SH\'} TRS=${TRS//э/je}; TRS=${TRS//Э/JE} 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' cheezee@ubuntu:~$ cheezee (30.06.05 00:18:35 MSK) автор топика Ссылка
Ну, настырный :) Вот тебе скрипт. Почему #!/bin/bash? Потому что /bin/dash глючит с юникодом. Можно #!/usr/bin/ksh, если pdksh стоит. Для FAT32, конечно, он избыточен, но мне лень сильно переделывать существующий скрипт :) ===== START SCRIPT ==== #!/bin/bash translit() { sed 'y/абвгдезиклмнопрстуфцъыьАБВГДЕЗИКЛМНОПРСТУФЦЪЫЬ/abvgdeziklmnoprstufc"y'\' 'ABVGDEZIKLMNOPRSTUFC"Y'\''/ s/ё/jo/ s/Ё/JO/ s/ж/zh/ s/Ж/ZH/ s/й/jj/ s/Й/JJ/ s/х/kh/ s/Х/KH/ s/ч/ch/ s/Ч/CH/ s/ш/sh/ s/Ш/SH/ s/щ/shh/ s/Щ/SHH/ s/э/eh/ s/Э/EH/ s/ю/ju/ s/Ю/JU/ s/я/ja/ s/Я/JA/' "$@" } if which mktemp >/dev/null 2>&1; then TEMP=`mktemp -d` else TEMP=$TMPDIR test -z "$TEMP" && TEMP=/tmp TEMP=$TEMP/trans-$$.tmp mkdir -m 0700 "$TEMP" || exit 1 fi trap "rm -rf $TEMP" EXIT INT QUIT ABRT TERM for d; do dir=`readlink -f "$1"` f1=$TEMP/f1 f2=$TEMP/f2 find "$dir" -printf '%p\t%l\n' |sort >$f1 translit $f1|sort >$f2 join -v1 -t ' ' $f1 $f2 |tac |cut -d\ -f1 | while read f; do d2=`dirname "$f"` b2=`basename "$f" |translit` f2="$d2/$b2" if test -L "$f"; then l1=`readlink "$f"` l2=`echo "$l1" |translit` test "$l1" != "$l2" && ln -fsn "$l2" "$f" fi test "$f" != "$f2" && mv -f "$f" "$f2" done done ===== END SCRIPT ===== watashiwa_daredeska ★★★★ (30.06.05 01:40:34 MSK) Показать ответ Ссылка
Ответ на: комментарий от watashiwa_daredeska 30.06.05 01:40:34 MSK Блин, maxcom, что за глюки? В функции translit в сточке с sed должно быть: "y'\''ABV без перевода строки! watashiwa_daredeska ★★★★ (30.06.05 01:44:21 MSK) Показать ответ Ссылка
Ответ на: комментарий от watashiwa_daredeska 30.06.05 01:44:21 MSK Шпасиба=).... cheezee (01.07.05 16:52:54 MSK) автор топика Ссылка