Скрипт переименования файлов и каталогов транслит

Иногда возникает необходимость массово переименовать файлы и директории в транслит (латиницу).

Создаем файл копируем листинг скрипта:

# vim translit

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

# shopt встроенная команда оболочки. Управляет опциями оболочки.
# Если в директории нет ни одного файла, соответствующего шаблону,
# то за имя файла принимается сам шаблон.
# Ключ nullglob исправляет эту ситуацию
shopt -s nullglob
# Перебираем все файлы в текущем каталоге
for NAME in * ; do
# sed-ом заменяем символы кирилицы на символы латиницы
 TRS=`echo $NAME | sed “y/абвгдезийклмнопрстуфхцы/abvgdezijklmnoprstufhcy/”`
 TRS=`echo $TRS | sed “y/АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ/ABVGDEZIJKLMNOPRSTUFHCY/”`
 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

Даем права на запуск:

# chmod +x translit

Перемещаем в /usr/bin/:

# mv translit /usr/bin/translit

Теперь можно пользоваться, заходим в нужную директорию, и запускаем:

# translit

Еще раз напомню что будут также переименованы все файлы во вложенных директориях.

Источник


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix.ru © Все права защищены 2015 - 2024

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!