Простой, простой в использовании поиск по индексу файла CLI на Unix?
Мне нужна простая утилита Unix, которая позволила бы мне быстро выполнять поиск в файлах с основными параметрами (эта папка, а не файлы такого типа...).
В настоящее время я использую функцию поиска ручной работы с grep и многими параметрами. Это быстро достаточно на небольших папках. Проблема в том, что я в основном работаю с одной папкой, которая содержит около 300 тыс. Файлов, а потом она слишком медленная.
То, что я ищу, - это небольшой инструмент, который индексирует содержимое файлов в этом каталоге (текстовые файлы) по запросу и позволяет мне выполнять поиск в этом индексе (и, конечно, отображать относительное содержимое).
То, что я ищу, - это поиск агента для Unix-систем в CLI.
Я хотел бы, если возможно, не устанавливать много. Сфинкс, например, слишком хлопотный, мне нужна легкая альтернатива.
Спасибо за ваши предложения.
3 ответа
locate
(или аналогичные) поставляется со многими системами Linux. Он сканирует файловую систему ежедневно, поэтому, если вы не ищете решение в реальном времени, это может быть инструментом для вас.
Моя рабочая станция Fedora и серверы CentOS поставляются с mlocate, но есть и несколько других вариантов.
Прежде чем вы собираетесь настроить что-то более сложное, я должен спросить, вы уже пробовали ack
, Это как grep
но предназначен для удовлетворения своих недостатков; ack автоматически ищет только текстовые файлы, пропускает двоичные файлы и так далее.
Зайдите на домашнюю страницу ack (если она запущена и работает, сейчас она мне не подходит) или установите ее через менеджер пакетов, если она есть в вашем дистрибутиве, и начните ее использовать.
Похоже, что некоторая версия домашней страницы ack также находится в кеше Google.
Это зависит от того, сколько времени приравнивается к "слишком большим трудностям", так как вы либо будете искать решение во время выполнения, либо что-то, что будет добывать каждый файл и создавать базу данных из ответов.
ack-grep
По предложению Janne Pikkaraiined выглядит полезным инструментом в первой категории.
tracker
(см. веб-сайт) стоит рассматривать как не обязательно глобальный поиск на рабочем столе с помощью инструментов cli, но с более странным синтаксисом запросов (по крайней мере, на мой взгляд); например
$> tracker-sparql -q "SELECT nie:url(?f) WHERE { ?f fts:match 'red OR blue yellow' }"
recoll
Похоже, он может иметь более понятный синтаксис поиска и быть более настраиваемым, чем трекер. Однако инструмент CLI не построен по умолчанию. Интересно, что вы также можете создать API Python.
Эта статья на linux.com интересна.