Я пытаюсь найти все копии example.filename
на моем сервере FreeBSD. Какой лучший / самый простой / самый эффективный способ сделать это?
locate filename
Намного быстрее, чем find
, если вы используете службу поиска, и она находит только те файлы, которые существовали в то время updatedb
последний запуск (обычно в ночь перед выполнением задания cron).
Вы жестяная банка бегать updatedb
вручную, но это даже медленнее, чем то find
Cletus предлагает, и требует root. Иногда я обновляю базу данных вручную после установки кучи нового.
find / -name example.filename
Иногда вам нужно найти файлы на определенном уровне каталогов. В этом случае может быть удобно использовать подстановочные знаки оболочки:
ls /data/*/example.filename
Очевидно, это работает, только если у вас жесткая структура каталогов.
Если у вас установлен locate (он же slocate), тогда
locate example.filename
locate каждую ночь выполняет задание cron, которое переиндексирует все файлы на вашем компьютере. По этой причине он не всегда актуален.
locate
Как уже упоминалось, locate
это быстрый способ найти файл. Эта команда использует предварительно скомпилированный индекс имен файлов и папок. В этой базе данных имен выполняется поиск, а не сканирование по вашей файловой системе.
locate example.filename
Чтобы регистр не учитывался, добавьте -i
.
locate -i eXAmPle.FileName
locate
база данныхБаза данных, используемая locate
должны быть актуальными. После выполнения установки или загрузки, которые могут содержать желаемый файл, вы должны обновить locate
база данных.
В locate
база данных в конечном итоге будет автоматически обновлена вашей системой FreeBSD. Есть еженедельный набор дел, в который входит это задание. Эти обязанности перечислены в /etc/periodic/weekly/310.locate
сценарий.
Самый простой и безопасный способ принудительно выполнить раннее обновление locate
база данных заставляет выполнять еженедельный набор дел прямо сейчас.
sudo periodic weekly
Или вы даже можете заставить выполнять все обычные обязанности по дому. Возможно, вы захотите сделать это сразу после установки новой системы FreeBSD.
sudo periodic daily weekly monthly
Если вы используете другие способы обновления locate
database, вы можете получить сообщение о небезопасности, раскрывающее имена всех файлов вашей системы любому пользователю системы FreeBSD. Используя periodic
маршрут позволяет избежать этой проблемы.
Если у вас есть актуальная база данных местоположения, просто:
locate example.filename
Я иногда делаю
find . | grep example.filename
вероятно, очень неэффективно.