View previous topic :: View next topic |
Author |
Message |
Mago
Joined: 07 Mar 2022 Posts: 1
|
(Separately) Posted: Mon Mar 07, 2022 11:46 Post subject: Копирование папок, содержащих найденные файлы |
|
|
Доброго времени суток. Не могу разобраться, я ищу файлы с определенным текстом, находит TXT, но мне нужно сохранить не сам файл тхт , а папку в которой он находится , а точнее папки так как файлов сотни . Как можно это сделать массово копировать все папки в которых найден искомый файл с текстом ? |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Tue Mar 08, 2022 21:13 Post subject: |
|
|
Ой, тут столько способов...
Например, после окончания поиска
1. Нажать "Feed to listbox";
2. Выделить что нужно или вообще всё командой cm_SelectAll;
3. Поместить выделение в буфер командой cm_CopyFullNamesToClip или родственной;
4. Ну и, собственно, уже в текстовом редакторе вставить из буфера.
Если такие действия приходится проделывать часто, лучше один раз написать скрипт, и потом тупо нажимать кнопку.
Обращаю внимание, что выше изложен не единственный и, возможно, не самый быстрый путь... _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10263 Location: Россия, Саратов
|
(Separately) Posted: Wed Mar 09, 2022 09:38 Post subject: |
|
|
Вахмурка
Вообще говоря, не так уж тут много годных способов, если внимательно вчитаться в запрос. А готового скрипта, позволяющего сделать это с минимальными усилиями в один проход, ИМХО, на данный момент пока нет. Если же использовать функционал TC, отчётливо видны три этапа операции.
Этап 1. Это легко. По содержимому файлов получить в результатах поиска список путей всех найденных файлов с этим содержимым. Далее выделить найденное и применить cm_CopyFullNamesToClip, всё правильно. (Можно сначала превратить найденное в набор колонок, где есть столбец с путём без имени файла типа [=tc.Путь], а потом скопировать по cm_CopyFileDetailsToClip и обработать в редакторе эту часть информации, суть та же.)
Этап 2 никакого отношения к TC не имеет. В неком внешнем текстовом редакторе предстоит вставить скопированное из буфера и превратить список путей с файлами в список папок без файлов (т.е. отсечь последние части путей). С какими трудозатратами это получится, зависит от возможностей редактора (в т.ч. поддержки регулярных выражений), объёма найденного и квалификации пользователя. Так или иначе на выходе должен появиться список папок с путями (если в одной папке есть несколько найденных файлов, то этот список будет короче исходного, пути-дубли надо убрать).
Этап 3. Снова возвращаемся в TC. Сохранённый файл-список проще всего указать параметром добавленной в TC 10 команды LOADLIST. После её вызова (кнопкой, клавишами и пр.) имеем в активной файловой панели как бы результаты поиска с содержимым этого списка, т.е. перечнем папок. Найденное выделяется и копируется обычным образом на другую файловую панель куда угодно.
Это, так сказать, базовая схема, имеющая при этом отношение к подфоруму "Общие вопросы". Всё прочее должно обсуждаться в "Автоматизации", но я там подходящих альтернатив не обнаружил.
Mago
Заголовок "копирование папок" не соответствует правилам форума, ибо не раскрывает суть запроса. Переименовано. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Wed Mar 09, 2022 14:24 Post subject: |
|
|
Mago wrote: | копировать все папки в которых найден искомый файл |
Если допускается копировать не только родительские папки, но и папки более высокого уровня, то можно воспользоваться плагином CopyTree.
Если нужны только родительские папки, то можно групповым переименованием (Ctrl+M) перенести файлы (в результатах поиска) с их родительскими папками во вспомогательные папки с уникальным именем (например, Абракадабра) с помощью маски для имени файла Абракадабра\[P]\[N], затем поиском найти эти папки и скопировать по F5 в требуемое место. Останется сделать откат переименований в инструменте группового переименования и удалить вспомогательные папки Абракадабра. Но при этом может измениться на текущую дата папок в исходных данных (для NTFS). Поэтому перед переименованием лучше воспользоваться или копией всех данных, или плагином CopyTree для промежуточного копирования найденных файлов (с папками) в отдельный каталог.
P.S.
Похоже, что решал не ту задачку, что все остальные: полагал, что в папках надо копировать не всё содержимое, а только найденные "файлы с определённым текстом".
Для правильной задачи, как вариант, список родительских папок с путями можно также получить в ИГП - инструменте группового переименования (без выполнения реального переименования!).
Примерно так:
1) Выделить в панели с результатами поиска найденные файлы
2) Запустить ИГП (Ctrl+M)
3) Поле Маска для: имени файла [=tc.Путь]
4) …расширения очистить
5) Найти: .
6) Заменить на: :
7) 1x включить
8) Кнопка внешнего редактора (F10), в контекстном меню выбрать "Редактировать имена..."
9) В редакторе сохранить список папок
10) Выйти из редактора, отказаться от загрузки изменённых имён
11) Выйти из ИГП
Пункты 2-7 можно заменить вызовом команды multirename имя_шаблона с сохранёнными в указанном шаблоне настройками ИГП. |
|
Back to top |
|
|
|
|
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
|