Я пытаюсь найти все копии example.filename
на моем сервере FreeBSD. Какой самый лучший / самый простой / самый эффективный способ сделать это?
Я пытаюсь найти все копии example.filename
на моем сервере FreeBSD. Какой самый лучший / самый простой / самый эффективный способ сделать это?
Ответы:
find / -name example.filename
locate filename
Гораздо быстрее, чем find
, если вы используете службу locate, и она находит только файлы, которые существовали на момент updatedb
последнего запуска (обычно ночью перед управлением заданием cron).
Вы можете запустить updatedb
вручную, но это даже медленнее , чем Клетус предполагает и требует корня. Иногда я обновляю базу данных вручную после установки новых вещей.find
find /
или работаете с большим деревом чаще, чем раз в неделю, то запуск locate
службы, вероятно, стоит того, потому что locate(1)
он намного быстрее.
sudo periodic weekly
обновляет locate
базу данных. Запустите его после любой установки или загрузки, которая может содержать нужные вам файлы.
Если у вас установлен locate (он же slocate), то
locate example.filename
locate каждый вечер запускает задание cron, которое переиндексирует все файлы на вашем компьютере. По этой причине это не всегда актуально.
Иногда вы хотите найти файлы на определенном уровне каталога. В этом случае может быть удобно использовать подстановочные знаки оболочки:
ls /data/*/example.filename
Очевидно, это работает, только если у вас жесткая структура каталогов.
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
базы данных, вы можете получить сообщение о том, что это небезопасно, раскрывая имена всех файлов вашей системы любому пользователю в системе FreeBSD. Использование periodic
маршрута позволяет избежать этой проблемы.
Если у вас есть актуальная база данных locate, просто:
locate example.filename
Я иногда делаю
find . | grep example.filename
вероятно, чрезвычайно неэффективно, однако.