Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Умное переименование составных имён файлов\папок
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Секреты и советы printer-friendly view
View previous topic :: View next topic  
Author Message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Fri Sep 17, 2010 01:30    Post subject: Умное переименование составных имён файлов\папок Reply with quote

Недавно столкнулся с такой задачей - переименование файлов типа
datatimegettimezoneinfo... должно было получаться DataTimeGetTimeZoneInfo - пытался обычными способами в групповом переименовании в окошках найти\заменить прописывать, но строка ограничена 1024 символоми, а нужных замен оказалось многовато. Было много всяких попыток, пока случайно не наткнулся на плагин Translit, хотя он для кодировок, но в этой задаче тоже справился на ура. Может это и не секрет, но я думаю, что кому-то это поможет решить не только эту задачу.
В файле ReName.ttb в секции [Symbols] прописывается
data=Data
time=Time
get=Get
zone=Zone
info=Info
...
в инструменте группового переименования вызывается плагин и этот файл. В расширении можно указать [L][E1][n][E2-] и всё!
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Sep 17, 2010 11:24    Post subject: Reply with quote

Интересный способ решения проблемы. Да, иногда бывает желание переименовать файлы, чтобы дать им красивые имена, не изменяя их с точностью до регистра символов.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Fri Sep 17, 2010 11:38    Post subject: Reply with quote

Эх, прикрутить бы еще к этому делу словарик какой, чтобы сам слова отделял Rolling Eyes
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Sat Sep 18, 2010 11:30    Post subject: Reply with quote

Вахмурка wrote:
Эх, прикрутить бы еще к этому делу словарик какой, чтобы сам слова отделял :roll:

А что мешает регэкспами Букву в Верхнем Регистре заменить на пробел плюс эту же букву.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sat Sep 18, 2010 12:26    Post subject: Reply with quote

Samwatas wrote:
А что мешает регэкспами Букву в Верхнем Регистре заменить на пробел плюс эту же букву
Мешает сущая мелочь - постановка задачи:
Quote:
переименование файлов типа datatimegettimezoneinfo

_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Sat Sep 18, 2010 17:42    Post subject: Reply with quote

Я просто неправильно понял. Я думал, что после переименования в DataTimeGetTimeZoneInfo нужно разделить слова пробелами.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sat Sep 18, 2010 18:28    Post subject: Reply with quote

Quote:
Эх, прикрутить бы еще к этому делу словарик

В задаче которая была у меня файлов было немного. Задался целью внести в файлик распространённые замены (file=File, list=List) - вручную прописывать ну уж больно долго. Помогите пожалуйста.
Я вывожу список имён файлов в редактор. Т.к. ряд файлов уже имеют встроенные имена начинающиеся с верхнего регистра, то необходимо их вытащить
1. Как сделать так (наверно с помощью рег.выраж.), чтобы остались только те имена, которые в середине имеют хотя бы один символ в верхнем регистре и , т.е. из имён

LogViewer
Icons
TotalCom
colors

должны остаться только LogViewer и TotalCom

2. и после этого отделить друг от друга, должно получиться
Log
Viewer
Total
Com
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Sat Sep 18, 2010 18:40    Post subject: Reply with quote

Я бы на вашем месте начинал бы учить какой-нибудь скриптовый язык (Автоит - это самый подходящий вариант, на мой взгляд). Поскольку у вас часто возникают задачи, которые требуют написания скриптов, то знания того же Автоита (или другого языка) ускорило бы решение таких задач (то есть вместо ожидания решения на форуме, можно быстрее решить самому).
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Sep 18, 2010 19:00    Post subject: Reply with quote

Для начала бы выучить 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
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Sep 18, 2010 19:38    Post subject: Reply with quote

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
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sat Sep 18, 2010 20:36    Post subject: Reply with quote

Samwatas wrote:
Я бы на вашем месте начинал бы учить какой-нибудь скриптовый язык

Я бы на вашем месте научился внимательно читать, и давать информацию, помогающую решению задачи, и не заниматься нравоучениями. Если бы все всё знали, то можно было бы закрывать форум.

Что касается темы. Спасибо за дельные советы - помогло. Столкнулся с проблемой ограничения секции - примерно 28588 символов.
Для корректного распознавания приходится писать дважды одно и тоже имя, т.к. есть уже такие имена в файлах:
file=File
File=File
поэтому файл увеличился. И ещё прописывать надо сначала длинные имена, затем короткие.
Об ограничении сообщил автору в личку, а там посмотрим
Но факт, что плагин работает отлично при том что в файле примерно 2700
строк с поиском и заменой. Почти не тормозит. Поэтому ждем ответа - конечно было бы отлично подключить словарик из часто употребляемых имён в файлах
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Sep 18, 2010 21:05    Post subject: Reply with quote

А если разбить общее множество слов на несколько ttb-файлов, чтоб каждый содержал часть слов (например, по 2700 строк), и потом в мультипереименователе просто применить таблицы одну за другой? Тогда все слова, содержащиеся во всех таблицах, будут обработаны - специфика задачи такова, что они друг другу мешать не будут. Да, это требует чуть больше действий, зато результат будет уже сейчас.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sat Sep 18, 2010 21:31    Post subject: Reply with quote

Quote:
применить таблицы одну за другой


Это я пробовал ещё вчера - просто получается удвоение имени и каждый файл переименовывает своё

[=translit.(USR) ReName_1][=translit.(USR) NameRe_2]

итогo:

ArhiveTArPlusArHiveTarPlUs.vbs

а файл был:

arhivetarplus.vbs

может я как-то не так прописатл
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Sat Sep 18, 2010 21:54    Post subject: Reply with quote

Не так. Сделать несколько операций переименования. Вначале в качестве имени указать [=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
View user's profile Send private message
fadetoback



Joined: 31 Oct 2010
Posts: 1
Location: Kharkov, Ukraine

Post (Separately) Posted: Sun Oct 31, 2010 18:31    Post subject: По умолчанию. Reply with quote

Скажите как сделать так, чтобы при открытии группового переименования файлов в ниспадающем списке выбора "Верхнего/нижнего регистра" переименования вместо "Без изменения", всегда при открытии было установлено "все строчные".
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Секреты и советы All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group