LINUX.ORG.RU

bash script транслит латиницы в кириллицу и перевод первой буквы в верхний регистр.

 


0

1

Добрый день, есть баш скрипт.

#!/bin/bash
cd /mnt/departament
for NAME in * ; do
# sed-ом заменяем символы латиницы на символы кирилицы
TRS=`echo $NAME | sed "y/abvgdeeziilmnopruf/абвгдеёзийлмнопруф/"`
TRS=`echo $TRS  | sed "y/ABVGDEEZIILMNOPRUF/АБВГДЕЁЗИЙЛМНОПРУФ/"`
TRS=${TRS//zh/ж};
TRS=${TRS//kh/х};
TRS=${TRS//ch/ч};
TRS=${TRS//sh/ш};
TRS=${TRS//sch/щ};
TRS=${TRS//yu/ю};
TRS=${TRS//ya/я};
TRS=${TRS//tc/ц};
TRS=${TRS//s/с};
TRS=${TRS//k/к};
TRS=${TRS//K/к};
TRS=${TRS//e/э};
TRS=${TRS//t/т};
# переименовываем
mv -v "$NAME" "$TRS"
echo $TRS | sed 's/\(.\)/\u\1/'
done

отрабатывает как положено, папки переименовывает,1-ю букву переводит в верхний регистр.

[root@CEN7~]# translit.sh
«obukhov» -> «обухов»
Обухов

Но заходя на шару папка как была вся в нижнем регистре так и осталась, что не так?



Последнее исправление: sher_man89 (всего исправлений: 4)
mv -v «$NAME» «$TRS»
echo $TRS | sed 's/\(.\)/\u\1/'

Переименовали NAME в TRS, сделали первую букву TRS заглавной, но в stdout.

Deleted
()
Ответ на: комментарий от sher_man89

Ну как уже было замечено, у тебя перевод в верхний регистр уже после того как ты всё переименовал.

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

что нужно дописать что бы он мне не в терминале выводил заглавную букву а именно переименовал папку?

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