Есть ли в Linux система поиска файлов типа «Все»?

46

В Windows есть хороший механизм поиска файлов, который называется « Все» , который (в отличие от find) очень быстрый и (в отличие от него locate) всегда возвращает обновленные результаты. AFAIK это работает, заполняя базу данных из журнала NTFS (это не работает с другими файловыми системами).

Интересно, есть ли что-то подобное (меня не волнует GUI; моя точка зрения - скорость и современная гарантия) для Linux (ext3 или ext4); Я гуглил, но ничего не нашел. Может ли что-то подобное быть сделано или даже кто-то работает над этим?

maaartinus
источник
2
Что мне нравится во всем, так это то, что он не только мгновенный, но и работает для нескольких разделов, например, для систем с множественной загрузкой с шестью установками Windows и несколькими разделами данных. Я хотел бы иметь поиск в Linux, который будет работать по нескольким разделам Linux, а не только по одному.
Arch Parsons
Существует много вариантов locate (mlocate, slocate, rlocate, ....) с собственными характеристиками (инкрементное обновление, индексация в реальном времени или безопасная индексация, ...). Все они легко конфигурируются (страницы обновленного b.conf и найдите)
Manu H

Ответы:

30

Вы можете взглянуть на rlocate , повторную реализацию locate, которая всегда актуальна. Еще один интересный проект - recoll, который также поддерживает индексирование в реальном времени и позволяет (как и beagle) дополнительно выполнять полнотекстовый поиск. Наконец, я должен упомянуть каракули, который также поддерживает индексирование в реальном времени. Для каракули есть некоторые хорошие интерфейсы, такие как сом .

Обратите внимание, что вы также можете сделать (r) поиск результатов кликабельным, используя, например, urxvt в качестве терминала-эмулятора и написав что-то вроде

URxvt.perl-ext: default,matcher URxvt.urlLauncher: /usr/bin/gnome-open     
URxvt.matcher.button: 1 URxvt.matcher.pattern.1: /.*

(и выполняет xrdb -load ~/.Xdefaultsпотом)

ученик
источник
1
Я думаю, что этот ответ должен быть принят. rlocateСам уже дает полный ответ.
phunehehe
4
Что случилось в 2017 году? В rlocate упоминается Linux 2.6, а не пакет Ubuntu 16.04. recoll кажется интересным и обновленным, хотя и излишним для моих нужд. У doodle есть пакет Ubuntu по состоянию на 16.04, так что это может быть вариант.
Стефан Гурихон
Почему recoll является излишним, вы также можете запустить recoll из командной строки. Он также хорошо интегрируется с KDE и Unity, если хотите.
студентка
Моя самая большая проблема с сомом - это невозможность взаимодействия с файлами - если я хочу скопировать 20 файлов из результатов поиска, мне нужно Show in File Manager20 раз.
Аннан
В документации rlocate есть список требований к «конфигурации ядра», которые я не знаю, как выполнить, и если я распаковываю их и запускаю, ./configureмне говорят, что я должен «установить пакет с полными исходными кодами ядра». Этот инструмент кажется недоступным для не-гуру.
Qwertie
7

Я также искал инструмент «Search Everything» для linux и обнаружил «Search Monkey» в репозитории Ubuntu. ЛЮБИТЬ ЭТО!

Он легкий, быстро загружается, поиск по шаблону мгновенно дает массу результатов, плюс есть фильтры и расширенные методы поиска.

Теперь у меня есть инструмент поиска "Все" для Linux!

Чарльз
источник
Сломана связь
Крис Невилл
4

Интересная идея для реализации этого коренится в файловой системе, но ничего такого не существует, насколько мне известно. Помимо нескольких надстроек, пытающихся проникнуть достаточно глубоко в верхние слои fs, чтобы получить данные на раннем этапе (Обновление: все относится к этой категории), я боюсь, что вы ограничены менее удовлетворительными процессами регулярная индексация.

Что может быть ближе всего к тому, что вы ищете, так это виртуальная файловая система libferris.

В мире индексирования вы можете взглянуть на glimpse , который, по крайней мере, способен обновлять и добавлять свой индекс.

Обновление: я только что прочитал материал о «Все», и, похоже, он тоже не присущ FS, поэтому libferris не так уж далек, плюс он также позволяет индексировать контент, а не только имена файлов. Это удовлетворяет вашу потребность быть в курсе всех событий.

Татьяна Хойзер
источник
Список рассылки Ferris истощился с 2007 года и не будет продолжаться после 2010 года. Существует репозиторий github, который не был активен в период с mi-2016 по март 2017 года github.com/monkeyiq/ferris/commits/master . Возможно, это продолжается.
Стефан Гурихон
2

Вы можете использовать locateкоманду, и если вы хотите обновить свою базу данных, выполните следующую команду:

# updatedb

Эта команда обновляет базу данных locate за несколько секунд

RobotMan
источник
интерактивный пример реализации: github.com/phil294/linux-locate-everything
phil294
2

Вы проверили Злой Поиск . Он заявляет в своем описании, что это так же, как все. FSearch также утверждает, что то же самое.

блюрэй
источник
1
Учитывая, сколько результатов поиска вы указываете на FSearch при поиске альтернативы Evernote для Linux, я удивлен, что вы единственный, кто разместил его здесь.
Ghos3t
1

Должно быть возможно построить что-то подобное в несколько строк кода с использованием inotify (есть также пакет inotify-tools, который позволит вам реализовать это с помощью сценариев оболочки).

(Я был бы очень удивлен, что любой такой инструмент будет извлечен из журнала - скорее всего, он реализован на уровне виртуальной файловой системы)

symcbean
источник
1
Я не уверен, что inotifyможет быть полезным здесь, поскольку это не рекурсивно. Создать часы для всего дерева просто, но может ли ядро ​​обрабатывать многие десятки тысяч из них? Даже если это возможно, это не выглядит эффективным способом для меня.
Maaartinus
1

btrfsреализовал find-newкоманду против подразделов в течение многих лет. Если вы сохраняете относительно современное дерево снимков, его можно использовать для атомарного наблюдения за изменениями файловой системы без особых усилий.

Вы бы использовали это как:

btrfs sub find-new /chk/path [gen-id]

Вы можете получить gen-id, который вам нужен для сравнения, с помощью той же команды, но с использованием фиктивного gen-id. Здесь больше информации .

mikeserv
источник
1

Интерфейс пользовательского интерфейса для команды locate, которая работает почти так же, как и все:

https://github.com/AlexTuduran/Locator/releases

Алекс Тудуран
источник
1
Похоже, что это построено на ложной предпосылке, которая locateникогда не обновляется автоматически.
Роайма
Пожалуйста, развивайтесь. Что вы подразумеваете под обновлением locate?
Алекс Тудуран
Ваш проект GitHub утверждает, что команда Unix locateиспользует тот же принцип, за исключением того, что база данных не обновляется автоматически . В locateпакет входит cronзадача, которая автоматически обновляет базу данных.
Ройма
Если это правда, то это только помогает цели инструмента. Обновление базы данных автоматически освобождает пользователя от выполнения другой задачи. Пользователь все еще может обновить базу данных явно, если требуется немедленное обновление. Или что беспокоит нас относительно ложной предпосылки?
Алекс Тудуран
1

Я использую Angry Search на Raspberry Pi 3 B + под управлением Stretch, и он работает нормально. Это действительно довольно быстро, как поиск по всем окнам. Очень приятно иметь возможность быстро находить файлы.

классная штука
источник