1. По першому разу я просто в vi створював безліч команд mv виробляють потрібні дії. Найбільш очевидний, і самий трудомісткий шлях Ж :-)
2. Пізніше я почав розбиратися з командним рядком Юнікса і міг запрограмувати масові перейменування.
в sed задається то як хочеться перейменувати файл.
Варіант для zsh
3. Як виявилося пізніше в постачанні perl є простенька утилитка rename. Першим параметром можна вказати шматочок коду на perl який застосовується до кожного імені файлу передані як параметри.
# Складніший варіант by mancubus.
4. У zsh є модуль zmv який якраз і займається подібними перетвореннями.
Це досить таки складна у використанні команда, і думаю тільки zsh-гуру можуть в повній мірі їй користуватися Ж :-)
Але тим не менше самі розробники пропонують зробити пару досить таки зручних алиасов, які поводяться
noglob перед командою позначає що * Не буде пребразован в імена файлів.
PS окреме спасибі товаришу mancubus за те що штовхнув мене дописати цю статтю Ж :-)
5
Рейтинг: 5 (1 vote)
Навігація по публікаціям
Скриптик для перейменування кириличних імен файлів в ругліш:
ЗИ: А ще ЕМНІП начебто був патч до convmv - додавання кодування ругліш ...
у мене utf-8 і результат не вражав
Запрацювало, після того як зберіг скрипт в koi-8, і додав примусову перекодування імені файлу в koi-8
За одне замість for використовував map.
Дякую! PS
до речі линка в тему
За map - спасибі, як-то протупил ;-))
Так, скриптик писався для неUTFной розкладки ... Не знаю як в разі Text :: Iconv, але iconv без -c спотикається на неприпустимих символах ... Так що тут треба бути обережним ;-))
А для UTFной - щось таке:
ЗИ: Ще спосіб «перекодування» (якась альтернатива convmv): свежевишедшій Midnight Commander уміє по ALT-e змінювати кодування прямо на файлової панелі. Встановлюємо на панелях потрібні кодування і далі F5 або F6 ...
Шановні гуру.Зачем такі складності. -) В Delphin знаходите потрібну папку з файлами в яких повний бардак.
Виділяєте всі файли «Правка»> «Виділити все»> у вікні курсором мишки стаєте на виділене, при натисканні правої кнопки миші з'являється меню, вибираєте «Періменовать», з'являється віконце в якому написано «об'єкт» і #. Замість об'єкта ставите все що хочете і нажімете ОК і буде вам щастя перейменоване з 1 і до ......
Та забув, з приводу десяток і сотень, як я з ними борюся. Я роблю так, що б не було бардаку з десятками сотнями і так далі, я в місце «об'єкт» ставлю потрібне кількість нулів і # а далі все шляхом 🙂
По-перше подпісиваті прийнято з кінці повідомлення, а не прямо в заголовку Ж :-)
По-друге не зовсім зрозуміло до чого цей коментар: до статті або до гілки коментарів про пронумерування файлів?
По-третє може варто було б реальних прикладів додати, а краще з скріншот (я так розумію Delphin це якась GUI програма).
Ідеї для прикладів можна брати прямо зі статті:
- Змінити розширення файлів
- пронумерувати файли
- Перекласти імена файлів у великій / малий регістри
- Прибрати префікс або суфікс у файлів
- і так далі..
Тоді це був би не тільки критичний, але і корисний коментар Ж :-)
з купи файлів з різними іменами, припустимо розширенням * .gif потрібно привести до такого виду:
image001.gif
image002.gif
...
imageNNN.gifХотя це дуже затребуване, але ненагуглівается гарне рішення ...
Шкода що початкові нулі не підставляти, тобто вид:
image1.gif
image2.gif
...
image999.gifЧто потім, при сортуванні, буде врозкид ...
x = 1000; for i in * .gif; do mv $ i image $ x.gif; x = $ (($ x + 1)); done
Чомусь ніхто не написав спосіб для find. Однак він теж може команди ісполнять.К наприклад тупе перейменування всіх файлів в каталозі
за одне перейменує всі що у вкладених каталогах Ж :-) ps
* Помоему зайве?
<> зразок треба квотувати
-
Signature invent in progress 24% ## ...... ..
> За одне перейменує всі що у вкладених каталогах Ж :-) Тільки в поточному:
-maxdepth 1> * помоему зайве?
+1><> зразок треба квотувати
ІМХО немає додано:
Винен, квотувати потрібно
А я через mc копіюю / перейменовую. Виділяєш потрібні файли, тиснеш F5 або F6, в джерелі пишеш:
* .c
а в приймачі:
* .bakІ все. Або, наприклад, поміняти місцями ім'я і розширення:
*. *
2.1Только метасимволу шелл галочка повинна бути включена для обох прикладів. Якщо її вимкнути, то там трохи складніше, але зате більш гнучкими. Коротше F1 в помошь 🙂
1) Доповнення до трудомісткого способу:
2) Щодо rename зі складу perl: величезне спасибі, раніше не знав, що там можна будь-які команди писати; використовував тільки s для заміни: D. До речі, з російськими буквами це не спрацює. Якщо локаль НЕ utf8, то можна зробити так:
Але якщо utf8 - не працює. Є ідеї? 3) Не зовсім в тему, але тим не менше: Для масового перейменування файлів між різними кодуваннями є convmv
Щоб lc працювало з російськими буквами при локалі utf8, додати
В результаті виходить монстр:
Причому і це не повне рішення: частину повідомлення про помилку в разі неможливості перейменування буде крякозябри: (Є ідеї? І взагалі, як забезпечити роботу lc з російськими буквами без таких громіздких конструкцій?
а просто use utf8 ;?
-
Signature invent in progress 24% ## ...... ..
Якщо список файлів береться з текстового файлу (cat ./spisok.txt) і імена файлів містять прогалини, то така схема не буде работатьВ таких випадках я поступаю так:
> Якщо список файлів береться з текстового файлу (cat ./spisok.txt) і імена файлів містять прогалини, то така схема не буде работатьКакая саме? 😉
о! це тема! мені якраз потрібно конвертувати диск з koi8-r в utf8 в зв'язку з переключенням системної локалі на останню ...
Спасибі ramok за капітальну працю і mancubus за ідею. Господа лінуксоїди, додавайте сюди свої способи перейменування;) додам свої 2 копійки - пакет mmv (apt-get install mmv), включає в себе утилитки mmv, mcp, mad, mln (ну, все вони лінки на один exeшнік, але це не настільки важливо 😉
Ось ще один приклад для перейменування, тобто всюди прибирає префікс kinopoisk.ru- з імені файлів
P.S.
у мене bash і навіть з
працює як то не так.
А можна привласнити групі файлів без розширень, що знаходяться в одній директорії, розширення ..
Спліт розрізав, а тепер їх все перейменовувати потрібно ...