Поиск файлов по нескольким текстовым параметрам

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Almaz
Posts: 2
Joined: Sat 30 Jan, 2016 10:14

Поиск файлов по нескольким текстовым параметрам

Post by Almaz »

Ситуация:
1) более 1000 файлов
2) примерно в 200 из этих 1000 есть уникальные значения (список этих уникальных значений есть)
3) если штатно то Alt+F7 и так 200 раз.

Как и где можно указать все эти уникальные значения разом и запустить поиск по результату получить список файлов в которых встречаются эти значения
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Поиск файлов по нескольким текстовым параметрам

Post by Shmuel »

Вам нужно воспользоваться плагином, который умеет искать из панелей по регулярным выражениям. Например, RESearch или LuaFAR Search.

Сначала нужно будет из списка уникальных значений приготовить регулярное выражение. Для этого нужно:
1. Заэкранировать символом \ все "спецсимволы" регулярных выражений, если они есть в уникальных значениях.
2. Объединить экранированные уникальные значения в одну строку с разделителем | между ними.

Затем вставляете то, что получилось, в строку поиска плагина и ищете.
Almaz
Posts: 2
Joined: Sat 30 Jan, 2016 10:14

Поиск файлов по нескольким текстовым параметрам

Post by Almaz »

Shmuel, подскажите пожалуйста спецсимволы регулярных выражений на примере:
007-01103-16
007-01104-16
007-01106-16
007-01115-16
007-01118-16
007-01119-16
007-01120-16
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Поиск файлов по нескольким текстовым параметрам

Post by Shmuel »

Здесь можно ничего не экранировать.
Но глядя на эти уникальные значения, скорее всего эту задачу можно решить проще.
Например, эти 7 уникальных значений - регулярным выражением 007-011\d\d-16.
Karagy
Posts: 57
Joined: Tue 02 May, 2006 08:43
Location: Питер
Been thanked: 3 times

Поиск файлов по нескольким текстовым параметрам

Post by Karagy »

1. Обратиться к ближайшему перловику. И не забыть, потом, его отблагодарить.
2. Обратиться к ближайшему человеку, прочитавшему man grep и понявшему прочитанное.

А к фару это вообще не имеет отношения.
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Поиск файлов по нескольким текстовым параметрам

Post by Shmuel »

Karagy wrote: А к фару это вообще не имеет отношения.
Отчего же? Задачи такой сложности решаю всегда плагином. Очень удобно.
Volodya
Posts: 268
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 30 times

Поиск файлов по нескольким текстовым параметрам

Post by Volodya »

Shmuel wrote: Например, эти 7 уникальных значений - регулярным выражением 007-011\d\d-16.
Строго говоря, ответ неверный. Такое регулярное выражение покрывает значительно более широкий круг значений. Правильно использовать перечисление (03|04 ... |20)
tumanovalex
Posts: 3
Joined: Sat 01 Dec, 2018 19:43

Плагин множественного поиска

Post by tumanovalex »

Есть большая база текстовых документов (doc, docx, rtf, архивы zip). При поступлении нового документа нужно проверить, встречаются ли указанные в нем строки (каждая строка от 3 до 18 символов находится на отдельной строке нового документа) в базе документов. Количество строк, которые нужно проверить, может достигать нескольких десятков. Строки, которые нужно найти, в настоящее время в файле RTF, но можно перевести в обычный текстовой файл. Подставлять по одной строке и искать - очень утомительно.Можно ли сделать такой плагин, который бы позволял выбрать файл со строками, которые нужно проверять, брал бы по одной строке из этого файла, искал в заданной директории с заданными параметрами поиска (расширение файла, возможность поиска по архивам и др.) и выводил бы в другой файл найденную строку и полное имя файла? Вообще можно ли это сделать с помощью плагина к FAR? Если можно, то подскажите, пожалуйста, ресурсы с информацией, которая помогла бы мне самому разобраться с созданием плагинов для FAR и разработать такой плагин (программирую на C++ и C#).
Shmuel
Posts: 6836
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Плагин множественного поиска

Post by Shmuel »

Если пользоваться уже существующими средствами, то можно так:
1. Переводим RTF файл со строками поиска в текстовый формат.
2. Пишем простенький скрипт, который делает из всех строк поиска одно регулярное выражение.
3. Берём один из плагинов RESearch или LF Search и делаем GREP с этим регулярным выражением.

Да, файлы, в которых ищем, должны быть в текстовом формате, а не doc, docx, rtf, pdf и т.д.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Плагин множественного поиска

Post by buniak_a_h »

Вы не написали, что хотели бы получить в результате. Предположу, что временную панель с файлами, в которых найдена одна из строк, перечисленных в файле поиска.
При работе под Windows я бы просто написал bat-файл с командами for /F - для перебора искомых строк и FindStr /M для поиска с перенаправлением результатов в файл. А затем команда tmp: <имя_файла> откроет этот список на временной панели.
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Плагин множественного поиска

Post by buniak_a_h »

Извините, даже это - слишком сложно... У FindStr есть параметр /G:файл - Получение строк из заданного файла (/ для консоли).. Т.е. цикл for /F - лишний.
Т.е. вся задача сводится к команде:
- для получения списка найденных строк:

Code: Select all

edit:<findstr /S /I /N /G:<имя_файла> <Маска>
- для получения списка файлов, содержащих строки:

Code: Select all

edit:<findstr /S /I /M /G:<имя_файла> <Маска>
Ограничение - при получении искомых строк из файла они не могут быть регулярными выражениями. Но, насколько я понял, это и не требуется
tumanovalex
Posts: 3
Joined: Sat 01 Dec, 2018 19:43

Как в Far задать несколько строк для поиска?

Post by tumanovalex »

Можно ли в Far задать несколько строк для поиска, чтобы он за один проход находил все файлы, в которых эти строки встречаются?
dominicana
Posts: 1
Joined: Wed 20 Nov, 2019 16:22
Has thanked: 2 times

Поиск одного из перечисленных значений

Post by dominicana »

Есть исходный список значений a, b, c, d
Нужно выполнить поиск в в файлах маски *.txt наличие одного из перечисленных значений
Подскажите какой разделитель должен быть между заданными значениями или как задать требуемый поиск в far?
User avatar
buniak_a_h
Posts: 4266
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

Поиск одного из перечисленных значений

Post by buniak_a_h »

dominicana, в стандартном поиске не предусмотрен поиск по регулярным выражениям; соответственно, искать можно только строку. НО! Не всё так грустно. Есть несколько плагинов, осуществляющих поиск регэкспов (LueFAR Search, RESearch или макросом). В поисковой строке укажите a|b|c|d
fps
Posts: 267
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 27 times
Been thanked: 14 times

Поиск одного из перечисленных значений

Post by fps »

Code: Select all

╔════════════════════ Regular Expression Search ═════════════════════╗
║ File mask(s):                 [ ] As regular expression            ║
║ *.txt                                                             ↓║
║ Containing text:                                                   ║
║ a|b|c|d                                                      ↓[ \ ]║
╟────────────────────────────────────────────────────────────────────╢
║ ( ) Plain text                                                     ║
║ (•) Regular expression                             [ ] [ Advanced ]║
Требуется плагин RESearch
Post Reply

Return to “Нужна помощь”