Страница 1 из 2
Удаление файлов, в имени которых больше N символов
Добавлено: Ср янв 27, 2010 02:30
Andrey_A
Столкнулся с такой проблемой. В папке есть файлы, в именах которых разное количество символов. В одном случае необходимо удалить файлы, в именах которых больше 5 символов. В другом больше 4-х. Кстати переодически приходится сталкиваться с такой-же проблемой, но с расширениями.
Я раньше это делал с помощью поиска, а потом удалял... можно ли как упростить задачу?
Добавлено: Ср янв 27, 2010 08:19
Avada
Andrey_A
Видимо, можно. Но прежде хотелось бы узнать, в чём состоит реальная необходимость этого. Конкретно.
Добавлено: Ср янв 27, 2010 10:00
Вахмурка
Это во-первых. А во-вторых, что значит "упростить"? Не создавать? Опиши, что должно происходить в случае, если в эту директорию сам Тотал или сторонняя программа копирует файл с именем из 10 символов. Не давать копировать? Усекать имя? Выдавать сообщение? Удалять?
Добавлено: Ср янв 27, 2010 10:15
Avada
Вахмурка
Вообще, как я понял (возможно, неверно), просто уже есть исходная папка с (с подкаталогами или без — пока неизвестно), файлы в которой зачем-то надо подвергнуть вивисекции. В плане хоть какого-то обоснования лично мне, кроме сохранения в папке только файлов, удовлетворяющих формату 8.3, ничего в голову не приходит. Но превышение 4 или 5 символов в имени? Это не говоря о том, что автоматизация данной процедуры потенциально опасна.
Добавлено: Ср янв 27, 2010 10:36
Вахмурка
Так и я об этом. Если мне по каким-либо причинам нужно произвести "вивисекцию", то ничего более простого и быстрого, чем поиск с использованием плагина, который считает символы (таких много), или сортировке по пользовательским колонкам (что по сути то же самое), с последующим удалением, просто не существует.
Это все равно как спросить "Периодически в квартире появляется грязь, я ее убираю. А есть более простой способ?". Есть. Либо не жить там, либо не убирать, потому что грязь все равно будет!
Добавлено: Ср янв 27, 2010 10:37
Tol!k
Чего набросились? Обычная рабочая ситуация: в папке лежат промежуточные результаты некой обработки файлов. Периодически часть из них становятся не нужны (уже обработаны и больше не понадобятся), вот их и нужно удалить.
Andrey_A, автоматически удалять я бы не решился — можно случайно перепутать фильтр для 4х- и 5и-символьных имён.
Но автоматизировать поиск можно: сделай и сохрани шаблоны поиска
Если я угадал с ситуацией, то советую давать результатам характерные имена, типа имяфайла.расширение.расширение (или префикс_имяфайла.расширение или имяфайла_постфикс.расширение)
Если обработка файлов происходит автоматически, то свяжи удаление с обработкой
Добавлено: Чт янв 28, 2010 02:38
Andrey_A
Я,понимаю, что это кому-то не надо, но всё же подскажите каким плагином создать шаблон "Найти_имя_более_4-х_символов"
скрипт, хоть и не умею писать пришлось накрапать сравнить другие (наверно есть ошибки ):
Avada: Содержимое скрипта удалено. Пояснения — в моём посте.
Осталось дело за шаблоном
Добавлено: Чт янв 28, 2010 08:03
MVV
Жмешь плюс на цифровой панели (если с подкаталогами, то предварительно Ctrl+B) и пишешь ?????*.* - это выделит файлы длиной 5 символов и больше. Т.е., больше 4-х. Для выделения файлов с длиной имени больше 5 добавь еще один вопросительный знак. Можно и через regexp - тогда шаблон выделения будет <^.{5,}\. (для файлов длиной от 5 символов, т.е. более 4 - для других задай сам другое число вместо 5). Если хочется написать командный файл, там можно использовать команду del с первым вариантом маски. Но судя по твоей заготовке командный файл тебе писать не хочется (хотя это проще и быстрее, чем то, что ты составил) - в общем, любой из шаблонов подойдет, хотя, наверное, первый быстрее (не требует regexp). Корректность скрипта я не проверял.
Кстати, если тебе нужно выделять только файлы, лучше использовать команду cm_SelectFiles, т.к. команда cm_SpreadSelection в зависимости от настроек ТК может выделять и подкаталоги.
Добавлено: Чт янв 28, 2010 09:42
Avada
Разрешите подвести некоторые итоги.
Tol!k спрашивал "Чего набросились?" Думаю, что вполне убедительным ответом на этот вопрос стал последующий пост автора темы. Человеку в несколько глоток говорили о сомнительности именно такой постановки задачи и о потенциальной опасности её реализации. В ответ — никаких разъяснений, а предупреждения просто игнорируются. И это, кстати, не первый случай. Обратите внимание на
эту тему.
Batya писал(а):Не обижайся, но мне кажется, что твоё желание всё по максимуму автоматизировать стало приобретать маниакальные масштабы
Andrey_A писал(а):а то, что касается Маньяка в коментариях Batya это комплимент для меня, мне понравилось - когда я 10 месяцев назад подключился к этому форуму, я всех считал маньяками-фанатами в своём роде, тех кто делал невероятное со скриптами, батниками...
Конечно же не любое "маньячество" и я приветствую, но автоматизация для меня - это не прихоть, а экономия времени, как и для других, наверное
Так вот. Я тоже приветствую отнюдь не любое "маньячество" и к этим цитатам хотел бы добавить третью, из известного литературного первоисточника.
— Я могу сказать только одно, — равнодушно сообщил Кристобаль Хозевич. — Я простой бывший Великий Инквизитор, и я закрою доступ к вашему автоклаву до тех пор, пока не получу гарантии, что эксперимент будет производиться на полигоне.
Работоспособность предложенного скрипта я не проверял и не собираюсь, проскольку считаю этот путь решения априорно вредной затеей. Запускаем скрипт в произвольном каталоге, далее автоматом всё выделяется, пролетает окно с запросом на подтверждение удаления — и привет горячий. Единственное светлое пятно: удаление всё же предполагается производить в Корзину, а не в обход её (в целях, скажем, минимизации времени на удаление). Впрочем, это у кого как функция клавиши F8 настроена...
А посему скрипт я, следуя элементарному принципу "не навреди", из темы удаляю. Не надо ему тут лежать в свободном доступе. Хочется автору — пусть в приватном порядке дорабатывает.
Разумных рецептов решения проблемы здесь было предложено достаточно. В том числе с помощью поисковых шаблонов TC.
К сведению
Andrey_A. Шаблон поиска создаётся не на основе скрипта. Такой шаблон для нахождения имени по превышению энного числа символов в имени (допустим, 4) может быть создан с помощью, например, плагина
Filename ChrCount:
filename_chrcount — Filename (ChrCount excl Ext) — > — 4
Каталог на основной странице поиска указывается тот, где всё это нужно искать.
Далее записывается шаблон, создаётся пользовательская команда типа
LOADSEARCH <имя_шаблона>. Дальнейшее, думаю, понятно. Для расширения есть другое свойство плагина, создаём отдельный шаблон. Для другого числа символов в имени — третий.
А уж что делать со списком найденного, выведенным на панель, пусть пользователь решает. С несколькими промежуточными кликами, зато абсолютно безопасно для себя и окружающих, если они решат следовать его примеру.
Добавлено: Чт янв 28, 2010 09:56
MVV
Ну, т.к. автор темы хотел найти решение, более простое, чем использование поиска, думаю, к месту будет напомнить, что шаблоны поиска можно использовать и в окне выделения файлов - будут выделены файлы в папке, удовлетворяющие шаблону. Согласен, лучше запускать удаление выделенных файлов вручную, а не доверять это глупому скрипту.
Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.
Добавлено: Чт янв 28, 2010 12:29
Tol!k
MVV писал(а):Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.
Маска ?????*.* (больше 4х) выделяет файлы
1.345
12.456
123.567
1234.678
Маска ??????*.* (больше 5и) выделяет файлы
12.456
123.567
1234.678
12345.789
Маски ?????*.?* и ??????*.?* работают правильнее
Если хочется написать командный файл, там можно использовать команду del с первым вариантом маски.
del с любой из этих масок удаляет все файлы
Добавлено: Чт янв 28, 2010 14:05
Andrey_A
Спасибо за комментарии. Действительно это действие небезопасно.
Я об этом сразу не подумал, ведь небезопасным скриптом или советом может кто-то воспользоваться... Частично я отказался от этой затеи. Впредь буду обдумывать, прежде чем добавлять новую тему
Спасибо за примеры MVV некоторыми воспользовался
Отдельное спасибо сенсею Avada
Добавлено: Пт янв 29, 2010 01:23
MVV
Tol!k писал(а):
Маска ?????*.* (больше 4х) выделяет файлы
1.345
12.456
123.567
1234.678
Маска ??????*.* (больше 5и) выделяет файлы
12.456
123.567
1234.678
12345.789
Маски ?????*.?* и ??????*.?* работают правильнее
Озадачил ты меня... Никогда бы не подумал, что звездочка включает точку-разделитель имени и расширения... Что-то тут не так. Я же явно указываю позицию точки... Буду спрашивать на оф. форуме.
Кстати, твои маски - тоже не панацея. Если файл без расширения, они работать не будут.
Во, придумал шаблон, работающий в любом случае, правда громоздко получилось немного:
(число можно любое, но одно и то же)
Добавлено: Пт янв 29, 2010 01:53
Lev
маска "В имени больше или 4 символа"
.{4}.*\..*$
[x]Regexp
[off]Упорно пытался обозвать маску ">=4", но на не сохранялась. Только с третьей-четвёртой попытки сообразил, что символ ">" используется ТС как служебный

[/off]
Добавлено: Пт янв 29, 2010 02:01
MVV
Lev писал(а):маска "В имени больше или 4 символа"
.{4}.*\..*$
[x]Regexp
Не работает, если файл без расширения - попросту нет точки в имени, хотя по логике ТК должен дописывать в конец точку, если в имени ни одной точки. Мой вариант (выше) громоздок, но проверяет оба случая - с точкой и без.