Видео ролики бесплатно онлайн

Смотреть мамки видео

Официальный сайт rosregistr 24/7/365

Смотреть видео бесплатно

06.02.10 20:53 galaxyman

СкриптыСкрипт для пакетного переименования (транслитерации) файлов

Скрипт для пакетного переименования (транслитерации) файлов и удаления пробелов в названии.
Назначение скрипта - переименовать рекурсивно все файлы, начиная с текущей папки, включая вложенные директории. При переименовании буквы русского алфавита заменяются по правилам транслитерации на английские, пробелы заменяются символом "_", "_-_" заменяются на "-". Правила конвертирования легко меняются правкой соответствующей строки скрипта.


Скрипт не мой, автор неизвестен. Я внес косметические изменения.

Пример работы скрипта.
Например есть файл:

Исполнитель - Имя композиции.mp3

После транслитерации и замены пробела сплэшем получаем:

Ispolnitel'-Imya_kompozicii.mp3

Скрипт работает рекурсивно, от текущей директории.
Файл скрипта можно скачать здесь.
Очень удобно для тех, кто часто работает в консоли. Например, я часто слушаю музыку с помощью mplayer, поэтому необходимость переключаться на русский и геморрой с пробелами мне быстро надоели. Скрипт очень выручает так же, если нужно выложить файлы на ftp или файлообменник (например на depositfiles.com русские буквы в именах файлов заменяются на символы подчеркивания, таким образом через некоторое время уже не знаешь, что это за файл).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

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

shopt -s nullglob
for NAME in *
do
TRS=`echo $NAME |tr : _`
TRS=${TRS//А/A};
TRS=${TRS//а/a};
TRS=${TRS//Б/B};
TRS=${TRS//б/b};
TRS=${TRS//в/v};
TRS=${TRS//В/V};
TRS=${TRS//г/g};
TRS=${TRS//Г/G};
TRS=${TRS//д/d};
TRS=${TRS//Д/D};
TRS=${TRS//е/e};
TRS=${TRS//ё/yo};
TRS=${TRS//Ё/Yo};
TRS=${TRS//ж/zh};
TRS=${TRS//Ж/Zh};
TRS=${TRS//з/z};
TRS=${TRS//З/Z};
TRS=${TRS//и/i};
TRS=${TRS//И/I};
TRS=${TRS//й/j};
TRS=${TRS//Й/J};
TRS=${TRS//к/k};
TRS=${TRS//К/K};
TRS=${TRS//л/l};
TRS=${TRS//Л/L};
TRS=${TRS//м/m};
TRS=${TRS//М/M};
TRS=${TRS//н/n};
TRS=${TRS//Н/N};
TRS=${TRS//о/o};
TRS=${TRS//О/O};
TRS=${TRS//п/p};
TRS=${TRS//П/P};
TRS=${TRS//р/r};
TRS=${TRS//Р/R};
TRS=${TRS//с/s};
TRS=${TRS//С/S};
TRS=${TRS//т/t};
TRS=${TRS//Т/T};
TRS=${TRS//у/u};
TRS=${TRS//У/U};
TRS=${TRS//ф/f};
TRS=${TRS//Ф/F};
TRS=${TRS//х/h};
TRS=${TRS//Х/H};
TRS=${TRS//ц/c};
TRS=${TRS//Ц/C};
TRS=${TRS//ч/ch};
TRS=${TRS//Ч/Ch};
TRS=${TRS//ш/sh};
TRS=${TRS//Ш/Sh};
TRS=${TRS//щ/sch};
TRS=${TRS//Щ/Sch};
TRS=${TRS//э/e};
TRS=${TRS//Э/E};
TRS=${TRS//ю/ju};
TRS=${TRS//Ю/Ju};
TRS=${TRS//я/ya};
TRS=${TRS//Я/Ya};
TRS=${TRS//ъ/\`};
TRS=${TRS//Ъ/\`};
TRS=${TRS//ь/'};
TRS=${TRS//Ь/'};
TRS=${TRS//ы/y};
TRS=${TRS//Ы/Y};
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

 


Теги:

digiwhite 06.02.10 21:21 # +0
Строчки TRS=${TRS//*/*} конечно порадовали :). Руками это жоско прописывать.
booley 06.02.10 21:34 # +1
Хм, а в чем профит?
Мне удобнее хранить все названия на оригинальном языке, UTF-8 позволяет.

А переключаюсь на англ./рус. CapsLockом. Скорость едва ли ниже, а вот русские буквы греют душу :)

Насчет музыки, mplayer это жестоко... есть же mpd, moc, на крайний случай mpg321. Почему именно mplayer?

Относительно шаринга - я шарю файлы на домашнем сервере, он доступен повсюду. А нужные буквы кодируются urlencode/urldecode :)
HTaeD 07.02.10 00:47 # +0
Зачем ставить mpg321, если можно mplayer /path/to/file.pm3 ?
albibek 07.02.10 09:22 # +0
Чтобы не париться с пробелами, достаточно взять имя файла в одинарные кавычки или воспользоваться tab-completion.
Если я ничего не путаю, iconv должен был уметь делать такую транслитерацию. Если не умеет, проще всего создать для него кодировку, которую я бы тоже для начала поискал готовую.
galaxyman 07.02.10 10:23 # +0
iconv должен был уметь делать такую транслитерацию
и рекурсивно спускаться по каталогам?
galaxyman 07.02.10 10:25 # +0
или воспользоваться tab-completion
вот автодополнению и мешают часто пробелы, если имена файлов или каталогов начинаются одинаково
albibek 07.02.10 09:23 # +0
И ещё, кстати:
if [[ `file -b "$NAME"` == directory ]];

легко заменяется на
if [[ -d "$NAME" ]];

Почитайте man test - будет интересно :)
albibek 07.02.10 09:25 # +0
Виноват, скобки одинарные:
if [ -d "$NAME" ]];


(Как же не зватает правки комментариев :()
albibek 07.02.10 09:26 # +0
Блин :(
Третья правка. Объедините в один, если можно :).
if [ -d "$NAME" ];
digiwhite 07.02.10 11:02 # +0
Скобки таки двойные.
booley 07.02.10 20:29 # +0
КАК ЖЕ УЖАСНО ПИСАТЬ МАЛЕНЬКИМИ БУКВАМИ!
s47 22.02.10 00:48 # +0
Хотел бы задать вопрос оффтопиком, т.к. на отдельный пост ради него не решился.
Скрипты писать не умею, абсолютно не знаком с грамматикой/синтаксиксом. А данная тема, частично касается моего вопроса.
Ситуация следующая: есть в папке с подпапками какое-то количество файлов содержащих необходимую к замене строчку. Как эту строчку заменить на нужную, не прибегая к ручному редактированию каждого файла, не говоря уже про поиск этих самых файлов.
То что нашёл это вот это. Но, как я понял, здесь есть подкавырка с SVN.
Также комманда Find должна помочь. Примерно вот как тут Но я не очень понял как этот "этаж" сложить в комманду. На сколько я понял, его нужно внутрь скрипта запихнуть.
В общем просьба наставить на путь истинный.
Darion 27.05.10 13:00 # +0
Чтоещезадепозитфайлс? о.О
http://pastebin.com/Fp0dXv86
cppmm 27.05.10 14:52 # +0
Исполнитель - Имя композиции.mp3

После транслитерации и замены пробела сплэшем получаем:

Ispolnitel'-Imya_kompozicii.mp3

Первый вариант лучше. Апостроф - это служебный символ, рискуем нарвать на глюки.
cppmm 27.05.10 14:52 # +0
*нарваться

Посты Комментарии
Последние посты
    Посты Комментарии
    Последние комментарии
      Посты Комментарии
      Изменения
        Посты Комментарии Изменения Черновики Избранное
        Черновики (все)
          Посты Комментарии Изменения Черновики Избранное
          Избранное (всё)
            Посты Комментарии Изменения Черновики Избранное
            Лучшие блоги (все 158)
            Топ пользователей Топ блогов
            Топ пользователей Топ блогов
            Элита (все 3248 из 234 городов)
            Топ пользователей Топ блогов
            В сети: doraneko, neclude, shidoh, knicefire

            Новенькие: Maratich, PoZitron, tdreamer, neqste, ktulhy-kun
            welinux.ru
            mechta.su: коттеджные поселки эконом класса.

            Смотреть онлайн бесплатно

            Онлайн видео бесплатно


            Смотреть русское с разговорами видео

            Online video HD

            Видео скачать на телефон

            Русские фильмы бесплатно

            Full HD video online

            Смотреть видео онлайн

            Смотреть HD видео бесплатно

            School смотреть онлайн