другие флаги 'find', которые могут быть подходящими, в зависимости от необходимости: -type f (не будет беспокоиться о каталогах или символических ссылках с тем же именем) -ls (чтобы показать детали, такие как размер файла, например, если файлы имеют одинаковые имя, но другое содержание)
Зак Томпсон
19
locate filename
Гораздо быстрее, чем find, если вы используете службу locate, и она находит только файлы, которые существовали на момент updatedbпоследнего запуска (обычно ночью перед управлением заданием cron).
Вы можете запустить updatedbвручную, но это даже медленнее , чем Клетус предполагает и требует корня. Иногда я обновляю базу данных вручную после установки новых вещей.find
Locate работает, только если у вас запущена служба для создания базы данных locate (забудьте, как она называется). Он также может страдать из-за задержки по времени (так как искомый файл может быть добавлен с момента последней сборки).
Клет
Правки и комментарии пересеклись на проводе. Здорово. Вы, конечно, правы по обоим пунктам.
dmckee --- котенок экс-модератора
4
Если вы обнаружите, что делаете find /или работаете с большим деревом чаще, чем раз в неделю, то запуск locateслужбы, вероятно, стоит того, потому что locate(1)он намного быстрее.
Дрю Стивенс
@cletus Running sudo periodic weeklyобновляет locateбазу данных. Запустите его после любой установки или загрузки, которая может содержать нужные вам файлы.
Василий Бурк
2
Если у вас установлен locate (он же slocate), то
locate example.filename
locate каждый вечер запускает задание cron, которое переиндексирует все файлы на вашем компьютере. По этой причине это не всегда актуально.
Как уже упоминалось, 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маршрута позволяет избежать этой проблемы.
Да, это соответствует всему, а затем выбрасывает все, кроме того имени, которое вы искали. Вместо этого вы можете просто выполнить команду 'find -name "example.filename"', которая делает то же самое без предварительной печати всего и без запуска дополнительного процесса grep.
Ответы:
источник
Гораздо быстрее, чем
find
, если вы используете службу locate, и она находит только файлы, которые существовали на моментupdatedb
последнего запуска (обычно ночью перед управлением заданием cron).Вы можете запустить
updatedb
вручную, но это даже медленнее , чем Клетус предполагает и требует корня. Иногда я обновляю базу данных вручную после установки новых вещей.find
источник
find /
или работаете с большим деревом чаще, чем раз в неделю, то запускlocate
службы, вероятно, стоит того, потому чтоlocate(1)
он намного быстрее.sudo periodic weekly
обновляетlocate
базу данных. Запустите его после любой установки или загрузки, которая может содержать нужные вам файлы.Если у вас установлен locate (он же slocate), то
locate каждый вечер запускает задание cron, которое переиндексирует все файлы на вашем компьютере. По этой причине это не всегда актуально.
источник
Иногда вы хотите найти файлы на определенном уровне каталога. В этом случае может быть удобно использовать подстановочные знаки оболочки:
Очевидно, это работает, только если у вас жесткая структура каталогов.
источник
locate
Как уже упоминалось,
locate
это быстрый способ найти файл. Эта команда использует предварительно скомпилированный индекс имен файлов и папок. Эта база данных имен ищется, а не сканируется в вашей файловой системе.Чтобы не учитывать регистр, добавьте
-i
.Обновить
locate
базу данныхИспользуемая база данных
locate
должна быть актуальной. После установки или загрузки, которая может содержать нужный файл, необходимо обновитьlocate
базу данных.locate
База данных будет в конечном итоге будет автоматически обновляться в вашей системе FreeBSD. Существует еженедельный набор дел, включающий эту задачу. Эти обязанности перечислены в/etc/periodic/weekly/310.locate
сценарии.Самый простой и безопасный способ форсировать раннее обновление
locate
базы данных - это сделать еженедельный набор дел по дому сейчас.Или вы могли бы даже заставить все обычные обязанности по дому. Возможно, вы захотите сделать это сразу после установки новой системы FreeBSD.
Если вы используете другие способы для обновления
locate
базы данных, вы можете получить сообщение о том, что это небезопасно, раскрывая имена всех файлов вашей системы любому пользователю в системе FreeBSD. Использованиеperiodic
маршрута позволяет избежать этой проблемы.источник
Если у вас есть актуальная база данных locate, просто:
источник
Я иногда делаю
вероятно, чрезвычайно неэффективно, однако.
источник