galaxyman 06.02.2010 20:53
Скрипты — Скрипт для пакетного переименования (транслитерации) файлов
Скрипт для пакетного переименования (транслитерации) файлов и удаления пробелов в названии.Назначение скрипта - переименовать рекурсивно все файлы, начиная с текущей папки, включая вложенные директории. При переименовании буквы русского алфавита заменяются по правилам транслитерации на английские, пробелы заменяются символом "_", "_-_" заменяются на "-". Правила конвертирования легко меняются правкой соответствующей строки скрипта.
Скрипт не мой, автор неизвестен. Я внес косметические изменения.
Пример работы скрипта.
Например есть файл:
Исполнитель - Имя композиции.mp3
После транслитерации и замены пробела сплэшем получаем:
Ispolnitel'-Imya_kompozicii.mp3
Скрипт работает рекурсивно, от текущей директории.
Файл скрипта можно скачать здесь.
Очень удобно для тех, кто часто работает в консоли. Например, я часто слушаю музыку с помощью mplayer, поэтому необходимость переключаться на русский и геморрой с пробелами мне быстро надоели. Скрипт очень выручает так же, если нужно выложить файлы на ftp или файлообменник (например на depositfiles.com русские буквы в именах файлов заменяются на символы подчеркивания, таким образом через некоторое время уже не знаешь, что это за файл).
digiwhite 06.02.2010 21:21 #
+ 0 -
Строчки TRS=${TRS//*/*} конечно порадовали :). Руками это жоско прописывать.
Хм, а в чем профит?
Мне удобнее хранить все названия на оригинальном языке, UTF-8 позволяет.
А переключаюсь на англ./рус. CapsLockом. Скорость едва ли ниже, а вот русские буквы греют душу :)
Насчет музыки, mplayer это жестоко... есть же mpd, moc, на крайний случай mpg321. Почему именно mplayer?
Относительно шаринга - я шарю файлы на домашнем сервере, он доступен повсюду. А нужные буквы кодируются urlencode/urldecode :)
Мне удобнее хранить все названия на оригинальном языке, UTF-8 позволяет.
А переключаюсь на англ./рус. CapsLockом. Скорость едва ли ниже, а вот русские буквы греют душу :)
Насчет музыки, mplayer это жестоко... есть же mpd, moc, на крайний случай mpg321. Почему именно mplayer?
Относительно шаринга - я шарю файлы на домашнем сервере, он доступен повсюду. А нужные буквы кодируются urlencode/urldecode :)
Чтобы не париться с пробелами, достаточно взять имя файла в одинарные кавычки или воспользоваться tab-completion.
Если я ничего не путаю, iconv должен был уметь делать такую транслитерацию. Если не умеет, проще всего создать для него кодировку, которую я бы тоже для начала поискал готовую.
Если я ничего не путаю, iconv должен был уметь делать такую транслитерацию. Если не умеет, проще всего создать для него кодировку, которую я бы тоже для начала поискал готовую.
iconv должен был уметь делать такую транслитерацию
и рекурсивно спускаться по каталогам?
или воспользоваться tab-completion
вот автодополнению и мешают часто пробелы, если имена файлов или каталогов начинаются одинаково
И ещё, кстати:
легко заменяется на
Почитайте man test - будет интересно :)
if << `file -b "$NAME"` == directory >>;
легко заменяется на
if << -d "$NAME" >>;
Почитайте man test - будет интересно :)
Виноват, скобки одинарные:
(Как же не зватает правки комментариев :()
if < -d "$NAME" >>;
(Как же не зватает правки комментариев :()
Блин :(
Третья правка. Объедините в один, если можно :).
Третья правка. Объедините в один, если можно :).
if < -d "$NAME" >;
Хотел бы задать вопрос оффтопиком, т.к. на отдельный пост ради него не решился.
Скрипты писать не умею, абсолютно не знаком с грамматикой/синтаксиксом. А данная тема, частично касается моего вопроса.
Ситуация следующая: есть в папке с подпапками какое-то количество файлов содержащих необходимую к замене строчку. Как эту строчку заменить на нужную, не прибегая к ручному редактированию каждого файла, не говоря уже про поиск этих самых файлов.
То что нашёл это вот это. Но, как я понял, здесь есть подкавырка с SVN.
Также комманда Find должна помочь. Примерно вот как тут Но я не очень понял как этот "этаж" сложить в комманду. На сколько я понял, его нужно внутрь скрипта запихнуть.
В общем просьба наставить на путь истинный.
Скрипты писать не умею, абсолютно не знаком с грамматикой/синтаксиксом. А данная тема, частично касается моего вопроса.
Ситуация следующая: есть в папке с подпапками какое-то количество файлов содержащих необходимую к замене строчку. Как эту строчку заменить на нужную, не прибегая к ручному редактированию каждого файла, не говоря уже про поиск этих самых файлов.
То что нашёл это вот это. Но, как я понял, здесь есть подкавырка с SVN.
Также комманда Find должна помочь. Примерно вот как тут Но я не очень понял как этот "этаж" сложить в комманду. На сколько я понял, его нужно внутрь скрипта запихнуть.
В общем просьба наставить на путь истинный.
Исполнитель - Имя композиции.mp3
После транслитерации и замены пробела сплэшем получаем:
Ispolnitel'-Imya_kompozicii.mp3
После транслитерации и замены пробела сплэшем получаем:
Ispolnitel'-Imya_kompozicii.mp3
Первый вариант лучше. Апостроф - это служебный символ, рискуем нарвать на глюки.