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

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

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

# 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 © Все права защищены 2022

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