Среди чего различия whereis
, locate
и find
команды на Ubuntu? Каковы основные различия с ищущей точки зрения?
От GNU findutils страница справки
программа находки ищет дерево каталогов для нахождения файла или группы файлов. Это пересекает дерево каталогов и сообщает обо всех случаях файла, соответствующего спецификациям пользователя. Программа находки включает очень мощную возможность поиска.
определять местоположение программа сканирует одну или несколько баз данных имен файлов и отображает любые соответствия. Это может использоваться в качестве очень быстрой команды находки, если файл присутствовал во время последнего обновления базы данных имени файла.
Так find
то, что Вы используете, когда Вы хотите искать по конкретным критериям и также управлять файлами. Это имеет намного больше опций, чем locate
так позволяет намного более мелкомодульное управление результатов. Это медленно, потому что это выполняет требуемый тест (тесты) на каждом файле, чтобы видеть, соответствует ли это.
locate
используется для сканирования целой системы быстро для чего-то - Вы могли бы использовать это, когда Вы понятия не имеете, где что-то, или когда Вы хотите найти все связанные файлы рассеянными через различные неизвестные места. Это быстро, потому что это использует двоичную базу данных для индексации системы. Чтобы заставить новые файлы обнаруживаться, первый показ sudo updatedb
(база данных это обновило однажды в день cron
эти whereis
, команда просто возвращает местоположение исполняемых файлов, страниц справочника и источников программы (см. man whereis
)
Большая разница то, что find
поиски реальные файлы рекурсивно вниз данный каталог, в то время как locate
поиски база данных, не требуя определенного каталога. Таким образом, если Вы сохранили файл прежде, чем обновить базу данных, find
найдет, что она, но locate
не будет.
Что касается whereis
и which
, они ищут только в тех каталогах, которые упоминаются в Вашей переменной ПУТИ и только тех, которые имеют исполняемый набор полномочий