- Поиск файлов
- Basenji
- Beagle
- Catfish
- Deskbar Applet
- DocFetcher
- dupeGuru
- Elasticsearch
- Esteaada
- Find4j
- FindeX
- foosearch
- Groonga
- KFind
- LxFinder
- mnoGoSearch
- OpenSearchServer
- Recoll – программа для полнотекстового поиска на Linux
- Поиск в Linux с помощью команды find
- Общий синтаксис
- Описание опций
- Примеры использования find
- Поиск файла по имени
- Поиск по дате
- По типу
- Поиск по правам доступа
- Поиск файла по содержимому
- С сортировкой по дате модификации
- Лимит на количество выводимых результатов
- Поиск с действием (exec)
- Чистка по расписанию
Поиск файлов
Basenji
Basenji — простое и удобное GTK графическое приложение (GUI) для каталогизации, учёта и инвентаризации сменных носителей.
Beagle
Beagle — это средство для поиска информации в вашем персональном пользовательском пространстве.
Catfish
Универсальный инструмент для поиска файлов.
Deskbar Applet
Апплет для GNOME2, позволяющий производить быстрый поиск в наиболее популярных поисковых web-системах, а также локальный поиск по файлам.
DocFetcher
DocFetcher — приложение для поиска файлов и документов по локальным дискам. Написано на Java (AspectJ) / SWT.
Duff — это утилита командной строки для быстрого поиска дубликатов заданного набора файлов.
dupeGuru
Комплекс коммерческих приложений для поиска дублирующихся файлов на жестких дисках компьютера.
Elasticsearch
Elasticsearch — многофункциональный распределённый движок полнотекстового поиска с поддержкой географии и аналитики.
Esteaada
Удобный инструмент для восстановления удалённых файлов.
Find4j
Быстрый поиск файлов в каталогах и архивах.
FindeX
Графическая утилита для локального поиска файлов и текста.
foosearch
Поиск файлов по локальным дискам.
Groonga
Утилита полнотекстового поиска, основанная на обратном индексе.
KFind
Поиск файлов и каталогов, с использованием критериев заданных пользователем.
LxFinder
Максимально простая утилита для поиска файлов.
mnoGoSearch
mnoGoSearch — это пара программ для организации поиска в небольших сетях, а именно краулер, обходящий документы сети и сохраняющий информацию о найденных в них словах в базе данных SQL, а также приложение CGI, выполняющее поиск документа по записям в базе данных, сделанным индексатором.
OpenSearchServer
Open Search Server — открытая (GPLv3) современная поисковая система, содержащая набор мощных алгоритмов полнотекстового поиска.
Источник
Recoll – программа для полнотекстового поиска на Linux
Если коротко оценить ситуацию с полнотекстовым поиском, то это прозвучит так: «всё очень плохо». Действительно, и на Linux и на Windows приходится по полторы программы, которые более или менее сносно выполняли свои функции. Прочитав статьи 5-7 летней давности с обзорами поисковых программ, начинает казаться, что в то время с локальным полнотекстовым поиском дела обстояли лучше. Одна только Google Desktop Search чего стоила! Кроссплатформенная, с полноценным поиском на национальных языках с пониманием морфем и очень быстрым и сбалансированным механизмом фонового сканирования. Почему Google Desktop прекратила своё существование загадка для меня похлеще улыбки Джоконды.
Поисковые программы я отбирал по следующим критериям:
- присутствует полнотекстовый поиск;
- есть фоновое сканирование.
Согласитесь, на такие уж большие требования. Хотелось бы ещё поиска с учётом национальных морфем, но это, в конце концов, не так уж важно.
Я перелопатил почти с десяток поисковых систем на Linux, среди которых были в том числе Tracker, Recoll, Strigi¸ Deskbar, Peagle, Yabi¸ Catfish. Почти все они оказались заброшенными, неподдерживаемые больше разработчиками, некоторые просто не захотели работать или оказались с примитивной функциональностью. Скажу честно, был момент, когда я отчаялся, что уже не найду ничего стоящего. К счастью, это оказалось не так. Ситуацию спасла программа Recoll. Официальный сайт.
Пользователи Ubuntu (Mint) могут установить эту программу из репозитория.
Но версия там 1.16 и в ней нет фонового сканирования! Но на официальном сайте доступна версия 1.17.3, в которой с фоновым сканированием всё в порядке! Чтобы установить именно последнюю версию, добавьте в источники приложений (для Ubuntu 12.04, Mint 13):
deb http://ppa.launchpad.net/recoll-backports/recoll-1.15-on/ubuntu/ precise main
deb-src http://ppa.launchpad.net/recoll-backports/recoll-1.15-on/ubuntu/ precise main
Для других версий Ubuntu и Mint источники приложений можно найти здесь.
Особенности установки на другие версии Linux описан здесь.
Итак, запускаем наш Recoll.
Первым делом, настроим параметры индексирования. Программа поддерживает русский язык, поэтому вряд ли будут затруднения. Самое главное, нам нужно выбрать каталоги для поиска. Все остальные настройки можно оставить без изменений или вернуться к ним позже.
Теперь нам нужно запустить индексацию. Это можно сделать через меню «Файл» -> «Обновить индекс»
А начиная с версии 1.17 ещё и через расписание индексирования. Можно выбрать запуск индексирования в определённое время (например, по ночам, когда компьютер простаивает), а можно задать фоновое индексирование. Всё очень удобно и просто – в самом меню предостаточно информации на русском языке, трудно не разобраться.
Индексирование происходит достаточно быстро. Если в качестве каталогов для индексирования вы выбрали сменные носители, то это не проблема – программа работает с ними как с обычными директориями.
Давайте попробуем что-нибудь найти:
Программа просто великолепно справилась!
Но это ещё не всё! В программе присутствует возможность сложного поиска. А здесь ещё больше интересного, в том числе:
- поиск по фразам, с возможностью указывать допустимый размер интервала между словами;
- по полям (автор и пр.);
- с исключением определённых слов;
- фильтровать по дате, по размеру, по типу файлов;
- искать только в определённом каталоге (или во всех каталогах, кроме одного).
И ещё один черпак мёда в нашу бочку мёда – программа понимает русские словоформы.
Итак, программа из разряда «Маст Хэв». Потрясающий гибкий поиск и отлаженный механизм сканирования. Программа полностью оправдала и превзошла ожидания, предъявляемые к продуктам подобного рода. Я не ставлю оценки программам, но этой бы поставил 6 баллов из 5 (ну или 5+).
Источник
Поиск в Linux с помощью команды find
Утилита find представляет универсальный и функциональный способ для поиска в Linux. Данная статья является шпаргалкой с описанием и примерами ее использования.
Общий синтаксис
— путь к корневому каталогу, откуда начинать поиск. Например, find /home/user — искать в соответствующем каталоге. Для текущего каталога нужно использовать точку «.».
— набор правил, по которым выполнять поиск.
* по умолчанию, поиск рекурсивный. Для поиска в конкретном каталоге можно использовать опцию maxdepth.
Описание опций
Опция | Описание |
---|---|
-name | Поиск по имени. |
-iname | Регистронезависимый поиск по имени. |
-type | |
-size | Размер объекта. Задается в блоках по 512 байт или просто в байтах (с символом «c»). |
-mtime | Время изменения файла. Указывается в днях. |
-mmin | Время изменения в минутах. |
-atime | Время последнего обращения к объекту в днях. |
-amin | Время последнего обращения в минутах. |
-ctime | Последнее изменение владельца или прав на объект в днях. |
-cmin | Последнее изменение владельца или прав в минутах. |
-user | Поиск по владельцу. |
-group | По группе. |
-perm | С определенными правами доступа. |
-depth | Поиск должен начаться не с корня, а с самого глубоко вложенного каталога. |
-maxdepth | Максимальная глубина поиска по каталогам. -maxdepth 0 — поиск только в текущем каталоге. По умолчанию, поиск рекурсивный. |
-prune | Исключение перечисленных каталогов. |
-mount | Не переходить в другие файловые системы. |
-regex | По имени с регулярным выражением. |
-regextype | Тип регулярного выражения. |
-L или -follow | Показывает содержимое символьных ссылок (симлинк). |
-empty | Искать пустые каталоги. |
-delete | Удалить найденное. |
-ls | Вывод как ls -dgils |
Показать найденное. | |
-print0 | Путь к найденным объектам. |
-exec <> \; | Выполнить команду над найденным. |
-ok | Выдать запрос перед выполнением -exec. |
Также доступны логические операторы:
Оператор | Описание |
---|---|
-a | Логическое И. Объединяем несколько критериев поиска. |
-o | Логическое ИЛИ. Позволяем команде find выполнить поиск на основе одного из критериев поиска. |
-not или ! | Логическое НЕ. Инвертирует критерий поиска. |
Полный набор актуальных опций можно получить командой man find.
Примеры использования find
Поиск файла по имени
1. Простой поиск по имени:
find / -name «file.txt»
* в данном примере будет выполнен поиск файла с именем file.txt по всей файловой системе, начинающейся с корня /.
2. Поиск файла по части имени:
* данной командой будет выполнен поиск всех папок или файлов в корневой директории /, заканчивающихся на .tmp
3. Несколько условий.
а) Логическое И. Например, файлы, которые начинаются на sess_ и заканчиваются на cd:
find . -name «sess_*» -a -name «*cd»
б) Логическое ИЛИ. Например, файлы, которые начинаются на sess_ или заканчиваются на cd:
find . -name «sess_*» -o -name «*cd»
в) Более компактный вид имеют регулярные выражения, например:
find . -regex ‘.*/\(sess_.*cd\)’
* где в первом поиске применяется выражение, аналогичное примеру а), а во втором — б).
4. Найти все файлы, кроме .log:
find . ! -name «*.log»
* в данном примере мы воспользовались логическим оператором !.
Поиск по дате
1. Поиск файлов, которые менялись определенное количество дней назад:
find . -type f -mtime +60
* данная команда найдет файлы, которые менялись более 60 дней назад.
2. Поиск файлов с помощью newer. Данная опция доступна с версии 4.3.3 (посмотреть можно командой find —version).
а) дате изменения:
find . -type f -newermt «2019-11-02 00:00»
* покажет все файлы, которые менялись, начиная с 02.11.2019 00:00.
find . -type f -newermt 2019-10-31 ! -newermt 2019-11-02
* найдет все файлы, которые менялись в промежутке между 31.10.2019 и 01.11.2019 (включительно).
б) дате обращения:
find . -type f -newerat 2019-10-08
* все файлы, к которым обращались с 08.10.2019.
find . -type f -newerat 2019-10-01 ! -newerat 2019-11-01
* все файлы, к которым обращались в октябре.
в) дате создания:
find . -type f -newerct 2019-09-07
* все файлы, созданные с 07 сентября 2019 года.
find . -type f -newerct 2019-09-07 ! -newerct «2019-09-09 07:50:00»
* файлы, созданные с 07.09.2019 00:00:00 по 09.09.2019 07:50
По типу
Искать в текущей директории и всех ее подпапках только файлы:
* f — искать только файлы.
Поиск по правам доступа
1. Ищем все справами на чтение и запись:
find / -perm 0666
2. Находим файлы, доступ к которым имеет только владелец:
find / -perm 0600
Поиск файла по содержимому
find / -type f -exec grep -i -H «content» <> \;
* в данном примере выполнен рекурсивный поиск всех файлов в директории / и выведен список тех, в которых содержится строка content.
С сортировкой по дате модификации
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r
* команда найдет все файлы в каталоге /data, добавит к имени дату модификации и отсортирует данные по имени. В итоге получаем, что файлы будут идти в порядке их изменения.
Лимит на количество выводимых результатов
Самый распространенный пример — вывести один файл, который последний раз был модифицирован. Берем пример с сортировкой и добавляем следующее:
find /data -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n 1
Поиск с действием (exec)
1. Найти только файлы, которые начинаются на sess_ и удалить их:
find . -name «sess_*» -type f -print -exec rm <> \;
* -print использовать не обязательно, но он покажет все, что будет удаляться, поэтому данную опцию удобно использовать, когда команда выполняется вручную.
2. Переименовать найденные файлы:
find . -name «sess_*» -type f -exec mv <> new_name \;
find . -name «sess_*» -type f | xargs -I ‘<>‘ mv <> new_name
3. Вывести на экран количество найденных файлов и папок, которые заканчиваются на .tmp:
find . -name «*.tmp» | wc -l
4. Изменить права:
find /home/user/* -type d -exec chmod 2700 <> \;
* в данном примере мы ищем все каталоги (type d) в директории /home/user и ставим для них права 2700.
5. Передать найденные файлы конвееру (pipe):
find /etc -name ‘*.conf’ -follow -type f -exec cat <> \; | grep ‘test’
* в данном примере мы использовали find для поиска строки test в файлах, которые находятся в каталоге /etc, и название которых заканчивается на .conf. Для этого мы передали список найденных файлов команде grep, которая уже и выполнила поиск по содержимому данных файлов.
6. Произвести замену в файлах с помощью команды sed:
find /opt/project -type f -exec sed -i -e «s/test/production/g» <> \;
* находим все файлы в каталоге /opt/project и меняем их содержимое с test на production.
Чистка по расписанию
Команду find удобно использовать для автоматического удаления устаревших файлов.
Открываем на редактирование задания cron:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm <> \;
* в данном примере мы удаляем все файлы и папки из каталога /tmp, которые старше 14 дней. Задание запускается каждый день в 00:00.
* полный путь к исполняемому файлу find смотрим командой which find — в разных UNIX системах он может располагаться в разных местах.
Источник