Skip to content

Instantly share code, notes, and snippets.

@rubinchyk
Created July 21, 2017 20:53
Show Gist options
  • Select an option

  • Save rubinchyk/a5a1558f70c8cf1b0650cd65a9d19b8e to your computer and use it in GitHub Desktop.

Select an option

Save rubinchyk/a5a1558f70c8cf1b0650cd65a9d19b8e to your computer and use it in GitHub Desktop.
Linux transliterate recursively files and folders from cyrillic
# Даем права на запуск:
# chmod +x translit.sh
# Открываем и копируем листинг скрипта:
# nano translit.sh
#!/bin/bash
# Перекодирует рекурсивно в текущем каталоге имена
# файлов и каталогов в транслит.
# shopt встроенная команда оболочки. Управляет опциями оболочки.
# Если в каталоге нет ни одного файла, соответствующего шаблону,
# то за имя файла принимается сам шаблон.
# Ключ nullglob исправляет эту ситуацию
shopt -s nullglob
# Перебираем все файлы в текущем каталоге
for NAME in * ; do
# sed-ом заменяем символы кирилицы на символы латиницы
TRS=`echo $NAME | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"`
TRS=`echo $TRS | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/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//Ь/\'}
TRS=${TRS// /_}
# переименовываем
mv -v "$NAME" "$TRS"
# Если это каталог, заходим в него
if [[ `file -b "$TRS"` == directory ]]; then
cd "$TRS"
"$0"
cd ..
fi
done
# Перемещаем в /usr/bin/:
# mv translit.sh /usr/bin/translit.sh
# В нужной папке translit.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment