LINUX.ORG.RU

Скрипт перевода имен файлов в транслит из FAQ


0

0

Не работает скрипт перевода имен файлов в транслит, взятый (просто копи-пэйст) из FAQ (http://www.linux.org.ru/books/lor-faq/lorFAQ-16.html#ss16.15)...

line 8: syntax error near unexpected token `then'

Огромная куча файлов :(( Вручную запарюсь :(((

krename тоже не работает как надо, превращает имена файлов в такое: usrlocalsharemusicRo manticmeri_poppins_-_veter_peremen.mp3 и кладет в домашнюю папку :(

ps. локаль utf8 (вдруг здесь косяк).


Попробуй такой скрипт (find . -exec translit.sh {} \;)
(Не самый лучший вариант + не обходит рекурсивно)

#!/bin/sh

NAME=""
TRANSLIT=""

TRTBL_l="s/ш/sh/g; s/ч/ch/g; s/щ/sh\'/g; s/ё/jo/g; s/ж/zh/g; s/э/je/g; s/ъ/\'/g; s/ь/\'/g; s/ю/ju/g; s/я/ja/g"
TRTBL_h="s/Ш/SH/g; s/Ч/CH/g; s/Щ/SH\'/g; s/Ё/JO/g; s/Ж/ZH/g; s/Э/JE/g; s/Ъ/\'/g; s/Ь/\'/g; s/Ю/JU/g; s/Я/JA/g"

translit()
{
	local cnm
	cnm="$NAME"

	cnm=`echo -n $cnm | tr "абвгдезийклмнопрстуфхцы" "abvgdezijklmnoprstufxcy"`
	cnm=`echo -n $cnm | tr "АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ" "ABVGDEZIJKLMNOPRSTUFXCY"`
	cnm=`echo -n $cnm | sed "$TRTBL_l"`
	cnm=`echo -n $cnm | sed "$TRTBL_h"`
	TRANSLIT="$cnm"
}

rename_file()
{
	NAME="$1"
	if [ "x$NAME" != "x" ] ; then
		translit
		echo "mv $NAME $TRANSLIT"
		mv "$NAME" "$TRANSLIT"
	fi
}

if [ "x$1" = "x" ] ; then
	echo Uses translit.sh filename 1>&2
	exit 1
fi

rename_file "$1"

rymis ★★
()
Ответ на: комментарий от rymis

Спасибо конечно... Но скорее всего значит проблема в utf8 :(((( Потому что и этот скрипт и просто $ ls | tr аб вгдезийклмнопрстуфхцы abvgdezijklmnoprstufxcy дает имена типа yyyyb yyyyyeyb - yyeyyyyyyyyyyyyyyymyy.mp3

:((((

hayova
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.