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

Вы пользуетесь 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 адресная строка анализ аплет апплет аудио батарея библиотеки блог браузер брошюра буфер обмена видео вывод горячие клавиши даунгрейд дистрибутив драйвер журнал загрузка захват звук ИБП игра интернет интерфейс кириллица клавиатура книга книжка кнопки кодеки командная строка комбинации клавиш коммерция компиляция конзоль копирование латинница локаль маршрутизация монтирование мультиплеер назначение клавиш настройка обновление образ объединение окно опрос оптимизация офис переименование печать плеер подкачка поиск потоковое аудио принтер проблема радио разделы разрезка раскладка клавиатуры рейтинг репозиторий русский сборка сеть скачать статистика Сумы темы терминал торрент транслит Украина установка файлы фильтр цитата эмуляция ядро ac3 adobe adventure air alsa AMD amd64 android apt ATI audio Avant Avenue avidemux boot camera Canon canonical capture cat Catalyst 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 GDM gecko getlibs Gimp git gnash gnome gnome shell go-oo grep grub gscan2pdf h.264 hdmi Homenet hotkeys hp html5 ice icq ifconfig intel internet ipwatchd iso jabber kde kernel keyboard layout knoppix koffice lame lexmark libreoffice lightdm lightspark Linux livecd lossless lts Lubuntu lucid LXDE MacOS mencoder microsoft mint mobile mozilla mp3 mplayer natty narwhal nautilus netbook network notebook Nvidia ocr ogg Oneiric Ocelot openoffice Opera oracle pdf peppermint phaser 3010 phaser 3040 php picture pidgin player polipo postscript Powercom ppa pppoe PPTP proxy pulseaudio python QR radiotray ru_UA russian Sauerbraten scan server shipit. shooter skype sound split squeeze stable streaming sun super os survival horror svn swap Telesweet tesseract theme thunar thunderbird tor torrent transcode translit ualinux Ubuntu ubuntu one Ubuntu Software Center ukrainian unity update-manager UPS usb usb-to-serial usb. com uTorrent vfat via video VLC VPN wavpack web-сервер Windows Wine Writer X-window x264 xerox xfce xmpp xonar dg xrandr xubuntu xvid zbar zend µTorrent