Удаление файлов, в имени которых больше N символов
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Удаление файлов, в имени которых больше N символов
Столкнулся с такой проблемой. В папке есть файлы, в именах которых разное количество символов. В одном случае необходимо удалить файлы, в именах которых больше 5 символов. В другом больше 4-х. Кстати переодически приходится сталкиваться с такой-же проблемой, но с расширениями.
Я раньше это делал с помощью поиска, а потом удалял... можно ли как упростить задачу?
Я раньше это делал с помощью поиска, а потом удалял... можно ли как упростить задачу?
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Это во-первых. А во-вторых, что значит "упростить"? Не создавать? Опиши, что должно происходить в случае, если в эту директорию сам Тотал или сторонняя программа копирует файл с именем из 10 символов. Не давать копировать? Усекать имя? Выдавать сообщение? Удалять?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Вахмурка
Вообще, как я понял (возможно, неверно), просто уже есть исходная папка с (с подкаталогами или без — пока неизвестно), файлы в которой зачем-то надо подвергнуть вивисекции. В плане хоть какого-то обоснования лично мне, кроме сохранения в папке только файлов, удовлетворяющих формату 8.3, ничего в голову не приходит. Но превышение 4 или 5 символов в имени? Это не говоря о том, что автоматизация данной процедуры потенциально опасна.
Вообще, как я понял (возможно, неверно), просто уже есть исходная папка с (с подкаталогами или без — пока неизвестно), файлы в которой зачем-то надо подвергнуть вивисекции. В плане хоть какого-то обоснования лично мне, кроме сохранения в папке только файлов, удовлетворяющих формату 8.3, ничего в голову не приходит. Но превышение 4 или 5 символов в имени? Это не говоря о том, что автоматизация данной процедуры потенциально опасна.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
- Вахмурка
- Сообщения: 2587
- Зарегистрирован: Пн дек 27, 2004 14:47
- Откуда: Большая деревня Москва
- Контактная информация:
Так и я об этом. Если мне по каким-либо причинам нужно произвести "вивисекцию", то ничего более простого и быстрого, чем поиск с использованием плагина, который считает символы (таких много), или сортировке по пользовательским колонкам (что по сути то же самое), с последующим удалением, просто не существует.
Это все равно как спросить "Периодически в квартире появляется грязь, я ее убираю. А есть более простой способ?". Есть. Либо не жить там, либо не убирать, потому что грязь все равно будет!
Это все равно как спросить "Периодически в квартире появляется грязь, я ее убираю. А есть более простой способ?". Есть. Либо не жить там, либо не убирать, потому что грязь все равно будет!
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Чего набросились? Обычная рабочая ситуация: в папке лежат промежуточные результаты некой обработки файлов. Периодически часть из них становятся не нужны (уже обработаны и больше не понадобятся), вот их и нужно удалить.
Andrey_A, автоматически удалять я бы не решился — можно случайно перепутать фильтр для 4х- и 5и-символьных имён.
Но автоматизировать поиск можно: сделай и сохрани шаблоны поиска
Если я угадал с ситуацией, то советую давать результатам характерные имена, типа имяфайла.расширение.расширение (или префикс_имяфайла.расширение или имяфайла_постфикс.расширение)
Если обработка файлов происходит автоматически, то свяжи удаление с обработкой
Andrey_A, автоматически удалять я бы не решился — можно случайно перепутать фильтр для 4х- и 5и-символьных имён.
Но автоматизировать поиск можно: сделай и сохрани шаблоны поиска
Если я угадал с ситуацией, то советую давать результатам характерные имена, типа имяфайла.расширение.расширение (или префикс_имяфайла.расширение или имяфайла_постфикс.расширение)
Если обработка файлов происходит автоматически, то свяжи удаление с обработкой
Жмешь плюс на цифровой панели (если с подкаталогами, то предварительно Ctrl+B) и пишешь ?????*.* - это выделит файлы длиной 5 символов и больше. Т.е., больше 4-х. Для выделения файлов с длиной имени больше 5 добавь еще один вопросительный знак. Можно и через regexp - тогда шаблон выделения будет <^.{5,}\. (для файлов длиной от 5 символов, т.е. более 4 - для других задай сам другое число вместо 5). Если хочется написать командный файл, там можно использовать команду del с первым вариантом маски. Но судя по твоей заготовке командный файл тебе писать не хочется (хотя это проще и быстрее, чем то, что ты составил) - в общем, любой из шаблонов подойдет, хотя, наверное, первый быстрее (не требует regexp). Корректность скрипта я не проверял.
Кстати, если тебе нужно выделять только файлы, лучше использовать команду cm_SelectFiles, т.к. команда cm_SpreadSelection в зависимости от настроек ТК может выделять и подкаталоги.
Кстати, если тебе нужно выделять только файлы, лучше использовать команду cm_SelectFiles, т.к. команда cm_SpreadSelection в зависимости от настроек ТК может выделять и подкаталоги.
Разрешите подвести некоторые итоги.
Tol!k спрашивал "Чего набросились?" Думаю, что вполне убедительным ответом на этот вопрос стал последующий пост автора темы. Человеку в несколько глоток говорили о сомнительности именно такой постановки задачи и о потенциальной опасности её реализации. В ответ — никаких разъяснений, а предупреждения просто игнорируются. И это, кстати, не первый случай. Обратите внимание на эту тему.
А посему скрипт я, следуя элементарному принципу "не навреди", из темы удаляю. Не надо ему тут лежать в свободном доступе. Хочется автору — пусть в приватном порядке дорабатывает.
Разумных рецептов решения проблемы здесь было предложено достаточно. В том числе с помощью поисковых шаблонов TC.
К сведению Andrey_A. Шаблон поиска создаётся не на основе скрипта. Такой шаблон для нахождения имени по превышению энного числа символов в имени (допустим, 4) может быть создан с помощью, например, плагина Filename ChrCount:
filename_chrcount — Filename (ChrCount excl Ext) — > — 4
Каталог на основной странице поиска указывается тот, где всё это нужно искать.
Далее записывается шаблон, создаётся пользовательская команда типа LOADSEARCH <имя_шаблона>. Дальнейшее, думаю, понятно. Для расширения есть другое свойство плагина, создаём отдельный шаблон. Для другого числа символов в имени — третий.
А уж что делать со списком найденного, выведенным на панель, пусть пользователь решает. С несколькими промежуточными кликами, зато абсолютно безопасно для себя и окружающих, если они решат следовать его примеру.
Tol!k спрашивал "Чего набросились?" Думаю, что вполне убедительным ответом на этот вопрос стал последующий пост автора темы. Человеку в несколько глоток говорили о сомнительности именно такой постановки задачи и о потенциальной опасности её реализации. В ответ — никаких разъяснений, а предупреждения просто игнорируются. И это, кстати, не первый случай. Обратите внимание на эту тему.
Batya писал(а):Не обижайся, но мне кажется, что твоё желание всё по максимуму автоматизировать стало приобретать маниакальные масштабы
Так вот. Я тоже приветствую отнюдь не любое "маньячество" и к этим цитатам хотел бы добавить третью, из известного литературного первоисточника.Andrey_A писал(а):а то, что касается Маньяка в коментариях Batya это комплимент для меня, мне понравилось - когда я 10 месяцев назад подключился к этому форуму, я всех считал маньяками-фанатами в своём роде, тех кто делал невероятное со скриптами, батниками...
Конечно же не любое "маньячество" и я приветствую, но автоматизация для меня - это не прихоть, а экономия времени, как и для других, наверное
Работоспособность предложенного скрипта я не проверял и не собираюсь, проскольку считаю этот путь решения априорно вредной затеей. Запускаем скрипт в произвольном каталоге, далее автоматом всё выделяется, пролетает окно с запросом на подтверждение удаления — и привет горячий. Единственное светлое пятно: удаление всё же предполагается производить в Корзину, а не в обход её (в целях, скажем, минимизации времени на удаление). Впрочем, это у кого как функция клавиши F8 настроена...— Я могу сказать только одно, — равнодушно сообщил Кристобаль Хозевич. — Я простой бывший Великий Инквизитор, и я закрою доступ к вашему автоклаву до тех пор, пока не получу гарантии, что эксперимент будет производиться на полигоне.
А посему скрипт я, следуя элементарному принципу "не навреди", из темы удаляю. Не надо ему тут лежать в свободном доступе. Хочется автору — пусть в приватном порядке дорабатывает.
Разумных рецептов решения проблемы здесь было предложено достаточно. В том числе с помощью поисковых шаблонов TC.
К сведению Andrey_A. Шаблон поиска создаётся не на основе скрипта. Такой шаблон для нахождения имени по превышению энного числа символов в имени (допустим, 4) может быть создан с помощью, например, плагина Filename ChrCount:
filename_chrcount — Filename (ChrCount excl Ext) — > — 4
Каталог на основной странице поиска указывается тот, где всё это нужно искать.
Далее записывается шаблон, создаётся пользовательская команда типа LOADSEARCH <имя_шаблона>. Дальнейшее, думаю, понятно. Для расширения есть другое свойство плагина, создаём отдельный шаблон. Для другого числа символов в имени — третий.
А уж что делать со списком найденного, выведенным на панель, пусть пользователь решает. С несколькими промежуточными кликами, зато абсолютно безопасно для себя и окружающих, если они решат следовать его примеру.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Ну, т.к. автор темы хотел найти решение, более простое, чем использование поиска, думаю, к месту будет напомнить, что шаблоны поиска можно использовать и в окне выделения файлов - будут выделены файлы в папке, удовлетворяющие шаблону. Согласен, лучше запускать удаление выделенных файлов вручную, а не доверять это глупому скрипту.
Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.
Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.
Маска ?????*.* (больше 4х) выделяет файлыMVV писал(а):Но в любом случае, использовать просто маски (с regexp или без него) для такого простого случая быстрее, чем применять внешние модули для подсчета числа символов.
1.345
12.456
123.567
1234.678
Маска ??????*.* (больше 5и) выделяет файлы
12.456
123.567
1234.678
12345.789
Маски ?????*.?* и ??????*.?* работают правильнее
del с любой из этих масок удаляет все файлыЕсли хочется написать командный файл, там можно использовать команду del с первым вариантом маски.
Спасибо за комментарии. Действительно это действие небезопасно.
Я об этом сразу не подумал, ведь небезопасным скриптом или советом может кто-то воспользоваться... Частично я отказался от этой затеи. Впредь буду обдумывать, прежде чем добавлять новую тему
Спасибо за примеры MVV некоторыми воспользовался
Отдельное спасибо сенсею Avada
Я об этом сразу не подумал, ведь небезопасным скриптом или советом может кто-то воспользоваться... Частично я отказался от этой затеи. Впредь буду обдумывать, прежде чем добавлять новую тему
Спасибо за примеры MVV некоторыми воспользовался
Отдельное спасибо сенсею Avada
Озадачил ты меня... Никогда бы не подумал, что звездочка включает точку-разделитель имени и расширения... Что-то тут не так. Я же явно указываю позицию точки... Буду спрашивать на оф. форуме.Tol!k писал(а): Маска ?????*.* (больше 4х) выделяет файлы
1.345
12.456
123.567
1234.678
Маска ??????*.* (больше 5и) выделяет файлы
12.456
123.567
1234.678
12345.789
Маски ?????*.?* и ??????*.?* работают правильнее
Кстати, твои маски - тоже не панацея. Если файл без расширения, они работать не будут.
Во, придумал шаблон, работающий в любом случае, правда громоздко получилось немного:
Код: Выделить всё
<^([^\.]{4,}|.{4,}\..*)$
Последний раз редактировалось MVV Пт янв 29, 2010 01:57, всего редактировалось 2 раза.