Last active
July 11, 2023 08:58
-
-
Save a-vasyliev/009cb30a7bd99a61d1bb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Перекодирует рекурсивно в текущем каталоге имена | |
# файлов и каталогов в транслит. | |
# | |
# Источник: http://www.ubuntu.sumy.ua/2011/03/translit.html | |
shopt -s nullglob | |
for NAME in * ; do | |
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//Ь/\'} | |
if [[ `file -b "$NAME"` == directory ]]; then | |
mv -v "$NAME" "$TRS" | |
cd "$TRS" | |
"$0" | |
cd .. | |
else | |
mv -v "$NAME" "$TRS" | |
fi | |
done |
duzun спасибо работает на linux!
нужно создать файл какой нибудь cyr2lat.sh и разрешить его выполнять
после запуска этого файла мои изображения в папке и подпапке переименовались в латинские символы
только я под себя немного изменил идентификацию символов
#!/bin/bash
# Перекодирует рекурсивно в текущем каталоге имена
# файлов и каталогов в транслит.
#
# Improved by Dumitru Uzun (https://DUzun.Me)
#
# Источник: http://www.ubuntu.sumy.ua/2011/03/translit.html
#
# Источник: https://gist.github.com/a-vasyliev/009cb30a7bd99a61d1bb
#
# Артём Кузнецов (я) немного изменил его под себя
shopt -s nullglob
# translit "стринг"
# echo "текст" | translit
# translit <<< "стдин"
translit() {
local NAME=${*:-$(cat)};
local TRS;
TRS=$(sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/" <<< "$NAME")
TRS=$(sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/" <<< "$TRS")
TRS=${TRS//ч/ch} TRS=${TRS//Ч/Ch};
TRS=${TRS//ш/sh} TRS=${TRS//Ш/Sh};
TRS=${TRS//ё/jo} TRS=${TRS//Ё/Jo};
TRS=${TRS//ж/g} TRS=${TRS//Ж/G};
TRS=${TRS//щ/sch} TRS=${TRS//Щ/Sch};
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//,/-};
hash iconv &> /dev/null && TRS=$(iconv -c -f UTF8 -t ASCII//TRANSLIT <<< "$TRS")
echo "$TRS";
}
trans_mv() {
local dir=${1:-$PWD}
for NAME in "$dir"/* ; do
TRS=$(translit <<< "${NAME// /-}")
if [ "$NAME" != "$TRS" ]; then
# echo "\"$NAME\" -> \"$TRS\""
mv -v "$NAME" "$TRS"
fi
if [ -d "$TRS" ]; then
trans_mv "$TRS"
fi
done
}
trans_mv "$1"
Hello. And is it works with sub folders for translit?
Thanks.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Под Windows имеем 'shopt' is not recognized as an internal or external command, operable program or batch file.
А вот этот вариант работает, правда, без буквы «ы».