Транслитерация имён файлов и имён каталогов в linux

Транслитерация имён файлов и имён каталогов в linux


Транслитерация имён файлов в текущем каталоге и его подкаталогах

1) создадим файл с именем translit.sh в каталоге с файлами которые требуют конвертации. В принципе, имя может быть любым.

2) добавим код в файл
#!/bin/bash
# Перекодирует рекурсивно в текущем каталоге имена
# файлов и каталогов в транслит.

shopt -s nullglob
for NAME in * ; do
filename=$(basename "$NAME");
extension=${filename##*.};
filename=${filename%.*};

TRS=`echo $filename | sed "y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufxcy/"`
TRS=`echo $TRS | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFXCY/"`
TRS=${TRS//ч/ch};
TRS=${TRS//./};
TRS=${TRS// /-};
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//,/};
TRS=${TRS//(/};
TRS=${TRS//)/};
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.$extension"
fi
done

3) назначим права файлу
sudo chmod 774 translit.sh

4) запускаем файл
./translit.sh

5) в результате обработки получаем (пример) «1. Волкодав.fb2» -> «1. Volkodav.fb2»
«2. Право на поединок.fb2» -> «2. Pravo na poedinok.fb2»
«3. Истовик-камень.fb2» -> «3. Istovik-kamen’.fb2»
«4. Знамение пути.fb2» -> «4. Znamenie puti.fb2»
Поделиться ссылкой:
ВКонтакт Facebook Одноклассники Twitter Mail.Ru

Популярное

phpStorm горячие клавиши
BASH: Сортировка папок по размеру. | Linux, awk, sort, du
Рекурсивный поиск grep/sed замена текста в файлах из консоли в linux

Возврат к списку