Я пытаюсь найти все копии 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
вероятно, чрезвычайно неэффективно, однако.