View previous topic :: View next topic |
Author |
Message |
Andrey_A
![](images/avatars/463408325511d535a14d3c.gif)
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Fri Sep 17, 2010 01:30 Post subject: Умное переименование составных имён файлов\папок |
|
|
Недавно столкнулся с такой задачей - переименование файлов типа
datatimegettimezoneinfo... должно было получаться DataTimeGetTimeZoneInfo - пытался обычными способами в групповом переименовании в окошках найти\заменить прописывать, но строка ограничена 1024 символоми, а нужных замен оказалось многовато. Было много всяких попыток, пока случайно не наткнулся на плагин Translit, хотя он для кодировок, но в этой задаче тоже справился на ура. Может это и не секрет, но я думаю, что кому-то это поможет решить не только эту задачу.
В файле ReName.ttb в секции [Symbols] прописывается
data=Data
time=Time
get=Get
zone=Zone
info=Info
...
в инструменте группового переименования вызывается плагин и этот файл. В расширении можно указать [L][E1][n][E2-] и всё! |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Вахмурка
![](images/avatars/3414476054480a72d7cff1.gif)
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Samwatas
Joined: 12 Sep 2009 Posts: 95
|
(Separately) Posted: Sat Sep 18, 2010 11:30 Post subject: |
|
|
Вахмурка wrote: | Эх, прикрутить бы еще к этому делу словарик какой, чтобы сам слова отделял :roll: |
А что мешает регэкспами Букву в Верхнем Регистре заменить на пробел плюс эту же букву. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Вахмурка
![](images/avatars/3414476054480a72d7cff1.gif)
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Sat Sep 18, 2010 12:26 Post subject: |
|
|
Samwatas wrote: | А что мешает регэкспами Букву в Верхнем Регистре заменить на пробел плюс эту же букву | Мешает сущая мелочь - постановка задачи: Quote: | переименование файлов типа datatimegettimezoneinfo |
_________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Samwatas
Joined: 12 Sep 2009 Posts: 95
|
(Separately) Posted: Sat Sep 18, 2010 17:42 Post subject: |
|
|
Я просто неправильно понял. Я думал, что после переименования в DataTimeGetTimeZoneInfo нужно разделить слова пробелами. |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Andrey_A
![](images/avatars/463408325511d535a14d3c.gif)
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sat Sep 18, 2010 18:28 Post subject: |
|
|
Quote: | Эх, прикрутить бы еще к этому делу словарик |
В задаче которая была у меня файлов было немного. Задался целью внести в файлик распространённые замены (file=File, list=List) - вручную прописывать ну уж больно долго. Помогите пожалуйста.
Я вывожу список имён файлов в редактор. Т.к. ряд файлов уже имеют встроенные имена начинающиеся с верхнего регистра, то необходимо их вытащить
1. Как сделать так (наверно с помощью рег.выраж.), чтобы остались только те имена, которые в середине имеют хотя бы один символ в верхнем регистре и , т.е. из имён
LogViewer
Icons
TotalCom
colors
должны остаться только LogViewer и TotalCom
2. и после этого отделить друг от друга, должно получиться
Log
Viewer
Total
Com |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Samwatas
Joined: 12 Sep 2009 Posts: 95
|
(Separately) Posted: Sat Sep 18, 2010 18:40 Post subject: |
|
|
Я бы на вашем месте начинал бы учить какой-нибудь скриптовый язык (Автоит - это самый подходящий вариант, на мой взгляд). Поскольку у вас часто возникают задачи, которые требуют написания скриптов, то знания того же Автоита (или другого языка) ускорило бы решение таких задач (то есть вместо ожидания решения на форуме, можно быстрее решить самому). |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sat Sep 18, 2010 19:00 Post subject: |
|
|
Для начала бы выучить regex. Итак, всё делалось в EmEditor.
Для удаления строчек, которые не содержат больших букв, делаем замену (?-i)^[^A-Z]*$(\r\n)? на пустую строку. При этом будет удален и разрыв строки после каждой строкой без больших букв, если он там есть.
Заменяем (?-i)([A-Z]+) на \L\r\n\1 - так мы найдем все последовательности из больших букв, перенесем их на новую строку и заменим их на маленькие (почему-то без знака + после [A-Z] у меня EmEditor отказался правильно выполнять замену; в принципе можно вместо + написать {1} - тогда каждая большая буква будет на новую строчку переноситься и становиться маленькой). В результате ты получишь: Code: | log
viewer
icons
total
com |
_________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Tol!k
![](images/avatars/669041092480e51f29c817.jpg)
Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Sep 18, 2010 19:38 Post subject: |
|
|
Andrey_A wrote: | 1. Как сделать так (наверно с помощью рег.выраж.), чтобы остались только те имена, которые в середине имеют хотя бы один символ в верхнем регистре и , т.е. из имён
LogViewer
Icons
TotalCom
colors
должны остаться только LogViewer и TotalCom |
Code: | sed -n /[A-Z].*[A-Z]/p list.txt > 2_Up.txt |
Andrey_A wrote: | 2. и после этого отделить друг от друга, должно получиться
Log
Viewer
Total
Com |
Code: | sed -r -n s/([A-Z][a-z]*)/\1\n/p 2_Up.txt > split.txt |
проверено на данных примерах с GNU sed version 4.2
и super-sed version 3.62 based on GNU sed version 4.1 |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Andrey_A
![](images/avatars/463408325511d535a14d3c.gif)
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sat Sep 18, 2010 20:36 Post subject: |
|
|
Samwatas wrote: | Я бы на вашем месте начинал бы учить какой-нибудь скриптовый язык |
Я бы на вашем месте научился внимательно читать, и давать информацию, помогающую решению задачи, и не заниматься нравоучениями. Если бы все всё знали, то можно было бы закрывать форум.
Что касается темы. Спасибо за дельные советы - помогло. Столкнулся с проблемой ограничения секции - примерно 28588 символов.
Для корректного распознавания приходится писать дважды одно и тоже имя, т.к. есть уже такие имена в файлах:
file=File
File=File
поэтому файл увеличился. И ещё прописывать надо сначала длинные имена, затем короткие.
Об ограничении сообщил автору в личку, а там посмотрим
Но факт, что плагин работает отлично при том что в файле примерно 2700
строк с поиском и заменой. Почти не тормозит. Поэтому ждем ответа - конечно было бы отлично подключить словарик из часто употребляемых имён в файлах |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sat Sep 18, 2010 21:05 Post subject: |
|
|
А если разбить общее множество слов на несколько ttb-файлов, чтоб каждый содержал часть слов (например, по 2700 строк), и потом в мультипереименователе просто применить таблицы одну за другой? Тогда все слова, содержащиеся во всех таблицах, будут обработаны - специфика задачи такова, что они друг другу мешать не будут. Да, это требует чуть больше действий, зато результат будет уже сейчас. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
Andrey_A
![](images/avatars/463408325511d535a14d3c.gif)
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sat Sep 18, 2010 21:31 Post subject: |
|
|
Quote: | применить таблицы одну за другой |
Это я пробовал ещё вчера - просто получается удвоение имени и каждый файл переименовывает своё
[=translit.(USR) ReName_1][=translit.(USR) NameRe_2]
итогo:
ArhiveTArPlusArHiveTarPlUs.vbs
а файл был:
arhivetarplus.vbs
может я как-то не так прописатл |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
MVV
![](images/avatars/7418103424d805f0e7526c.gif)
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sat Sep 18, 2010 21:54 Post subject: |
|
|
Не так. Сделать несколько операций переименования. Вначале в качестве имени указать [=translit.(USR) ReName_1], переименовать файлы, затем загрузить только что переименованные файлы в переименователь (кнопочка с изогнутой стрелочкой слева от кнопки запуска переименования) и указать в качестве имени [=translit.(USR) ReName_2], и так для каждой таблицы.
Кстати, вижу, что есть проблемы, если одно слово является частью другого - например, слова Hive и Archive - тогда в результате получается ArcHive. Получается, в последней таблице нужна еще строка ArcHive=Archive, которая будет исправлять подобные артефакты. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
fadetoback
Joined: 31 Oct 2010 Posts: 1 Location: Kharkov, Ukraine
|
(Separately) Posted: Sun Oct 31, 2010 18:31 Post subject: По умолчанию. |
|
|
Скажите как сделать так, чтобы при открытии группового переименования файлов в ниспадающем списке выбора "Верхнего/нижнего регистра" переименования вместо "Без изменения", всегда при открытии было установлено "все строчные". |
|
Back to top |
|
![](templates/subSilver/images/spacer.gif) |
|