Приглашаем авторов

Вы пользуетесь Ubuntu и желаете поделиться секретами преодоления тех трудностей, с которыми вам пришлось столкнуться в процессе работы? Или же просто изложить алгоритм установки драйвера или настройки специфической программы, чтобы с легкостью найти в будущем? А быть может размещаете подобное в собственном блоге, но не находите благодарного читателя из-за специфики темы?

Предлагаем вам войти в команду Блога Ubuntu в Сумах, который поможет вам реализовать упомянутые выше интересы.

Узнать больше

суббота, 26 марта 2011 г.

Пакетное переименование кириллических имен файлов в латинницу (translit)

Недавно у меня возникла потребность переименовать целую группу файлов из кириллицы в транслит (для чтения на моём не русифицированном Palm ), и после недолгого поиска я нашел один интересный скрипт, для которого ниже даю рекомендации по использованию.


1)  создадим файл с именем translit.sh в каталоге /usr/bin/. В принципе, имя может быть любым, но будьте внимательны, чтобы оно не совпало с уже используемым в системе. Для этого выполним:
sudo gedit /usr/bin/translit.sh
2) в появившимся окне текстового редактора вставим нижеследующий код:

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

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

3) закроем редактор, применив изменения
4) установим исполняемые права для файла:
sudo chmod 775 /usr/bin/translit.sh
 Теперь, для того, чтобы переименовать все файлы и каталоги внутри какого-то каталога, нам необходимо лишь перейти в него и выполнить команду translit.sh

Пример использования: 
/media/m/Books/Художественное/Semenova/FB2$ translit.sh
«Семенова Мария» -> «Semenova Marija»
«Валькирия.fb2» -> «Val'kirija.fb2»
«Ведун.fb2» -> «Vedun.fb2»
«Викинги.fb2» -> «Vikingi.fb2»
«Волкодав» -> «Volkodav»
«1. Волкодав.fb2» -> «1. Volkodav.fb2»
«2. Право на поединок.fb2» -> «2. Pravo na poedinok.fb2»
«3. Истовик-камень.fb2» -> «3. Istovik-kamen'.fb2»
«4. Знамение пути.fb2» -> «4. Znamenie puti.fb2»
«5. Самоцветные горы.fb2» -> «5. Samocvetnye gory.fb2»
«Два короля.fb2» -> «Dva korolja.fb2»
«Кудеяр» -> «Kudejar»
«1. Аленький цветочек.fb2» -> «1. Alen'kij cvetochek.fb2»
«2. Вавилонская башня.fb2» -> «2. Vavilonskaja bashnja.fb2»
«Лебединая дорога.fb2» -> «Lebedinaja doroga.fb2»
«Лебеди улетают.fb2» -> «Lebedi uletajut.fb2»
«Меч мертвых.fb2» -> «Mech mertvyx.fb2»
«Мир Волкодава» -> «Mir Volkodava»
«1. Бусый волк.fb2» -> «1. Busyj volk.fb2»
«2. Там, где лес не растет.fb2» -> «2. Tam, gde les ne rastet.fb2»
«Орлиная круча.fb2» -> «Orlinaja krucha.fb2»
«Пелко и волки.fb2» -> «Pelko i volki.fb2»
«Поединок со змеем.fb2» -> «Poedinok so zmeem.fb2»
«Родная душа. Рассказы о собаках.fb2» -> «Rodnaja dusha. Rasskazy o sobakax.fb2»
«С викингами на Свальбард.fb2» -> «S vikingami na Sval'bard.fb2»
«Те же и скунс» -> «Te zhe i skuns»
«1. Те же и скунс.fb2» -> «1. Te zhe i skuns.fb2»
«2. Те же и скунс - 2.fb2» -> «2. Te zhe i skuns - 2.fb2»
«Хромой кузнец.fb2» -> «Xromoj kuznec.fb2»
«Эгида» -> «JEgida»
«1. Вкус крови.fb2» -> «1. Vkus krovi.fb2»
«2. Заказ.fb2» -> «2. Zakaz.fb2»
«3. Магия успеха.fb2» -> «3. Magija uspexa.fb2»
«4. Преступление без срока давности.fb2» -> «4. Prestuplenie bez sroka davnosti.fb2»
«5. Экстрасенс.fb2» -> «5. JEkstrasens.fb2»
«Год Людоеда.fb2» -> «God Ljudoeda.fb2»
«Дядя Леша.fb2» -> «Djadja Lesha.fb2»

2 комментария:

  1. evg@geminga:~/Музыка/Владимир Высоцкий/Visotskii_best$ sh ~/ttt.sh
    /home/evg/ttt.sh: 5: shopt: not found
    /home/evg/ttt.sh: 28: Bad substitution

    ОтветитьУдалить
  2. Evg, shopt это команда bash. Возможно, именно sh мог выдать ошибку. Такое бывает.
    Попробуйте выполнить просто как ~/ttt.sh , установив предварительно исполняемые права файлу, как указано выше.

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.

Облако тегов

10.04 10.10 11.04 11.10 12.04 12.10 1C 32-bit 3D 64-bit 9.04 9.10 AMD ATI Avant Avenue Canon Catalyst GDM Gimp Homenet LXDE Linux Lubuntu MacOS Nvidia Oneiric Ocelot Opera PPTP Powercom QR Sauerbraten Telesweet UPS Ubuntu Ubuntu Software Center VLC VPN Windows Wine Writer X-window ac3 adobe adventure air alsa amd64 android apt audio avidemux boot camera canonical capture cat cdemu cdrom cgroups chrome 9 clipboard commodore compiz console cuneiform cups deadbeaf deadbeef deb debian deluge desura djvu document foundation downgrade dpkg driver dvd error ethernet firefox flac flash foobar2000 ftp game games gecko getlibs git gnash gnome gnome shell go-oo grep grub gscan2pdf h.264 hdmi hotkeys hp html5 ice icq ifconfig intel internet ipwatchd iso jabber kde kernel keyboard layout knoppix koffice lame lexmark libreoffice lightdm lightspark livecd lossless lts lucid mencoder microsoft mint mobile mozilla mp3 mplayer natty narwhal nautilus netbook network notebook ocr ogg openoffice oracle pdf peppermint phaser 3010 phaser 3040 php picture pidgin player polipo postscript ppa pppoe proxy pulseaudio python radiotray ru_UA russian scan server shipit. shooter skype sound split squeeze stable streaming sun super os survival horror svn swap tesseract theme thunar thunderbird tor torrent transcode translit uTorrent ualinux ubuntu one ukrainian unity update-manager usb usb-to-serial usb. com vfat via video wavpack web-сервер x264 xerox xfce xmpp xonar dg xrandr xubuntu xvid zbar zend µTorrent ИБП Сумы Украина адресная строка анализ аплет апплет аудио батарея библиотеки блог браузер брошюра буфер обмена видео вывод горячие клавиши даунгрейд дистрибутив драйвер журнал загрузка захват звук игра интернет интерфейс кириллица клавиатура книга книжка кнопки кодеки командная строка комбинации клавиш коммерция компиляция конзоль копирование латинница локаль маршрутизация монтирование мультиплеер назначение клавиш настройка обновление образ объединение окно опрос оптимизация офис переименование печать плеер подкачка поиск потоковое аудио принтер проблема радио разделы разрезка раскладка клавиатуры рейтинг репозиторий русский сборка сеть скачать статистика темы терминал торрент транслит установка файлы фильтр цитата эмуляция ядро