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 

Удаление файлов, в имени которых больше N символов
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Andrey_A



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

Post (Separately) Posted: Wed Jan 27, 2010 03:30    Post subject: Удаление файлов, в имени которых больше N символов Reply with quote

Столкнулся с такой проблемой. В папке есть файлы, в именах которых разное количество символов. В одном случае необходимо удалить файлы, в именах которых больше 5 символов. В другом больше 4-х. Кстати переодически приходится сталкиваться с такой-же проблемой, но с расширениями.
Я раньше это делал с помощью поиска, а потом удалял... можно ли как упростить задачу?
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Wed Jan 27, 2010 09:19    Post subject: Reply with quote

Andrey_A
Видимо, можно. Но прежде хотелось бы узнать, в чём состоит реальная необходимость этого. Конкретно.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Wed Jan 27, 2010 11:00    Post subject: Reply with quote

Это во-первых. А во-вторых, что значит "упростить"? Не создавать? Опиши, что должно происходить в случае, если в эту директорию сам Тотал или сторонняя программа копирует файл с именем из 10 символов. Не давать копировать? Усекать имя? Выдавать сообщение? Удалять?
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Wed Jan 27, 2010 11:15    Post subject: Reply with quote

Вахмурка
Вообще, как я понял (возможно, неверно), просто уже есть исходная папка с (с подкаталогами или без — пока неизвестно), файлы в которой зачем-то надо подвергнуть вивисекции. В плане хоть какого-то обоснования лично мне, кроме сохранения в папке только файлов, удовлетворяющих формату 8.3, ничего в голову не приходит. Но превышение 4 или 5 символов в имени? Это не говоря о том, что автоматизация данной процедуры потенциально опасна.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Wed Jan 27, 2010 11:36    Post subject: Reply with quote

Так и я об этом. Если мне по каким-либо причинам нужно произвести "вивисекцию", то ничего более простого и быстрого, чем поиск с использованием плагина, который считает символы (таких много), или сортировке по пользовательским колонкам (что по сути то же самое), с последующим удалением, просто не существует.

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



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

Post (Separately) Posted: Wed Jan 27, 2010 11:37    Post subject: Reply with quote

Чего набросились? Обычная рабочая ситуация: в папке лежат промежуточные результаты некой обработки файлов. Периодически часть из них становятся не нужны (уже обработаны и больше не понадобятся), вот их и нужно удалить.
Andrey_A, автоматически удалять я бы не решился — можно случайно перепутать фильтр для 4х- и 5и-символьных имён.
Но автоматизировать поиск можно: сделай и сохрани шаблоны поиска

Если я угадал с ситуацией, то советую давать результатам характерные имена, типа имяфайла.расширение.расширение (или префикс_имяфайла.расширение или имяфайла_постфикс.расширение)
Если обработка файлов происходит автоматически, то свяжи удаление с обработкой
Back to top
View user's profile Send private message
Andrey_A



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

Post (Separately) Posted: Thu Jan 28, 2010 03:38    Post subject: Reply with quote

Я,понимаю, что это кому-то не надо, но всё же подскажите каким плагином создать шаблон "Найти_имя_более_4-х_символов"
скрипт, хоть и не умею писать пришлось накрапать сравнить другие (наверно есть ошибки ):

Avada: Содержимое скрипта удалено. Пояснения — в моём посте.

Осталось дело за шаблоном
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Thu Jan 28, 2010 09:03    Post subject: Reply with quote

Жмешь плюс на цифровой панели (если с подкаталогами, то предварительно Ctrl+B) и пишешь ?????*.* - это выделит файлы длиной 5 символов и больше. Т.е., больше 4-х. Для выделения файлов с длиной имени больше 5 добавь еще один вопросительный знак. Можно и через regexp - тогда шаблон выделения будет <^.{5,}\. (для файлов длиной от 5 символов, т.е. более 4 - для других задай сам другое число вместо 5). Если хочется написать командный файл, там можно использовать команду del с первым вариантом маски. Но судя по твоей заготовке командный файл тебе писать не хочется (хотя это проще и быстрее, чем то, что ты составил) - в общем, любой из шаблонов подойдет, хотя, наверное, первый быстрее (не требует regexp). Корректность скрипта я не проверял.

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



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Thu Jan 28, 2010 10:42    Post subject: Reply with quote

Разрешите подвести некоторые итоги.

Tol!k спрашивал "Чего набросились?" Думаю, что вполне убедительным ответом на этот вопрос стал последующий пост автора темы. Человеку в несколько глоток говорили о сомнительности именно такой постановки задачи и о потенциальной опасности её реализации. В ответ — никаких разъяснений, а предупреждения просто игнорируются. И это, кстати, не первый случай. Обратите внимание на эту тему.
Batya wrote:
Не обижайся, но мне кажется, что твоё желание всё по максимуму автоматизировать стало приобретать маниакальные масштабы

Andrey_A wrote:
а то, что касается Маньяка в коментариях Batya это комплимент для меня, мне понравилось - когда я 10 месяцев назад подключился к этому форуму, я всех считал маньяками-фанатами в своём роде, тех кто делал невероятное со скриптами, батниками...
Конечно же не любое "маньячество" и я приветствую, но автоматизация для меня - это не прихоть, а экономия времени, как и для других, наверное

Так вот. Я тоже приветствую отнюдь не любое "маньячество" и к этим цитатам хотел бы добавить третью, из известного литературного первоисточника.
Quote:
— Я могу сказать только одно, — равнодушно сообщил Кристобаль Хозевич. — Я простой бывший Великий Инквизитор, и я закрою доступ к вашему автоклаву до тех пор, пока не получу гарантии, что эксперимент будет производиться на полигоне.

Работоспособность предложенного скрипта я не проверял и не собираюсь, проскольку считаю этот путь решения априорно вредной затеей. Запускаем скрипт в произвольном каталоге, далее автоматом всё выделяется, пролетает окно с запросом на подтверждение удаления — и привет горячий. Единственное светлое пятно: удаление всё же предполагается производить в Корзину, а не в обход её (в целях, скажем, минимизации времени на удаление). Впрочем, это у кого как функция клавиши F8 настроена...

А посему скрипт я, следуя элементарному принципу "не навреди", из темы удаляю. Не надо ему тут лежать в свободном доступе. Хочется автору — пусть в приватном порядке дорабатывает.

Разумных рецептов решения проблемы здесь было предложено достаточно. В том числе с помощью поисковых шаблонов TC.
К сведению Andrey_A. Шаблон поиска создаётся не на основе скрипта. Такой шаблон для нахождения имени по превышению энного числа символов в имени (допустим, 4) может быть создан с помощью, например, плагина Filename ChrCount:
filename_chrcount — Filename (ChrCount excl Ext) — > — 4
Каталог на основной странице поиска указывается тот, где всё это нужно искать.
Далее записывается шаблон, создаётся пользовательская команда типа LOADSEARCH <имя_шаблона>. Дальнейшее, думаю, понятно. Для расширения есть другое свойство плагина, создаём отдельный шаблон. Для другого числа символов в имени — третий.
А уж что делать со списком найденного, выведенным на панель, пусть пользователь решает. С несколькими промежуточными кликами, зато абсолютно безопасно для себя и окружающих, если они решат следовать его примеру.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Thu Jan 28, 2010 10:56    Post subject: Reply with quote

Ну, т.к. автор темы хотел найти решение, более простое, чем использование поиска, думаю, к месту будет напомнить, что шаблоны поиска можно использовать и в окне выделения файлов - будут выделены файлы в папке, удовлетворяющие шаблону. Согласен, лучше запускать удаление выделенных файлов вручную, а не доверять это глупому скрипту.

Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.
_________________
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: Thu Jan 28, 2010 13:29    Post subject: Reply with quote

MVV wrote:
Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.

Маска ?????*.* (больше 4х) выделяет файлы
1.345
12.456
123.567
1234.678

Маска ??????*.* (больше 5и) выделяет файлы
12.456
123.567
1234.678
12345.789

Маски ?????*.?* и ??????*.?* работают правильнее

Quote:
Если хочется написать командный файл, там можно использовать команду del с первым вариантом маски.
del с любой из этих масок удаляет все файлы
Back to top
View user's profile Send private message
Andrey_A



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

Post (Separately) Posted: Thu Jan 28, 2010 15:05    Post subject: Reply with quote

Спасибо за комментарии. Действительно это действие небезопасно.
Я об этом сразу не подумал, ведь небезопасным скриптом или советом может кто-то воспользоваться... Частично я отказался от этой затеи. Впредь буду обдумывать, прежде чем добавлять новую тему
Спасибо за примеры MVV некоторыми воспользовался
Отдельное спасибо сенсею Avada
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Fri Jan 29, 2010 02:23    Post subject: Reply with quote

Tol!k wrote:

Маска ?????*.* (больше 4х) выделяет файлы
1.345
12.456
123.567
1234.678

Маска ??????*.* (больше 5и) выделяет файлы
12.456
123.567
1234.678
12345.789

Маски ?????*.?* и ??????*.?* работают правильнее

Озадачил ты меня... Никогда бы не подумал, что звездочка включает точку-разделитель имени и расширения... Что-то тут не так. Я же явно указываю позицию точки... Буду спрашивать на оф. форуме.
Кстати, твои маски - тоже не панацея. Если файл без расширения, они работать не будут.
Во, придумал шаблон, работающий в любом случае, правда громоздко получилось немного:
Code:
<^([^\.]{4,}|.{4,}\..*)$

(число можно любое, но одно и то же)
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…


Last edited by MVV on Fri Jan 29, 2010 02:57; edited 2 times in total
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Fri Jan 29, 2010 02:53    Post subject: Reply with quote

маска "В имени больше или 4 символа"
.{4}.*\..*$
[x]Regexp

[off]Упорно пытался обозвать маску ">=4", но на не сохранялась. Только с третьей-четвёртой попытки сообразил, что символ ">" используется ТС как служебный Smile[/off]
Back to top
View user's profile Send private message
MVV



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

Post (Separately) Posted: Fri Jan 29, 2010 03:01    Post subject: Reply with quote

Lev wrote:
маска "В имени больше или 4 символа"
.{4}.*\..*$
[x]Regexp

Не работает, если файл без расширения - попросту нет точки в имени, хотя по логике ТК должен дописывать в конец точку, если в имени ни одной точки. Мой вариант (выше) громоздок, но проверяет оба случая - с точкой и без.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander 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