Як знайти файл у FreeBSD


14

Я намагаюся знайти всі копії example.filenameна моєму сервері FreeBSD. Який найкращий / найпростіший / найефективніший спосіб зробити це?


1
Хоча відповіді будуть подібними, ви можете уточнити, чи використовуєте ви Linux або FreeBSD. Вони не те саме.
Грег Х'югілл

відредагований заголовок, щоб зробити ОС більш конкретним
Ян

Напевно, це має бути позначено FreeBSD, але мені не вистачає репутації.
mikl

Відповіді:


18
find / -name example.filename

2
Надійний, але повільний. Іноді дуже повільно.
dmckee --- кошеня колишнього модератора

3
інші прапорці «find», які можуть бути доречними, залежно від потреби: -type f (не буде турбуватися з каталогами чи символьними посиланнями з тим самим іменем) -ls (для відображення деталей, таких як розмір файлу, наприклад, якщо файли мають однаковий ім'я, але різний зміст)
Зак Томпсон,

19
locate filename

Набагато швидше, ніж find, якби ви працюєте в локацію служби, і він тільки знаходить файли , які існували в той час updatedbостаннього запуску (ніч зазвичай працює на рідкому Befor під контролем хрон).

Ви можете запустити updatedbвручну, але це навіть повільніше , ніж Клетус передбачає і вимагає кореня. Я інколи оновлюю базу даних вручну після встановлення купки нових речей.find


3
Розташування працює лише в тому випадку, якщо у вас працює служба зі створення db locate (забудьте, що воно називається). Він також може постраждати від затримки в часі (оскільки файл, який ви шукаєте, може бути доданий з останньої збірки).
клент

Редагування та коментарі схрещені на дроті. Класно. Ви, звичайно, праві в обох пунктах.
dmckee --- кошеня колишнього модератора

4
Якщо ви виявляєте, що робите find /або на будь-якому великому дереві більше одного разу на тиждень, то запускати locateслужбу, мабуть, варто, адже locate(1)це набагато швидше.
Дрю Стівенс

@cletus Running sudo periodic weeklyоновлює locateбазу даних. Запустіть це після будь-якої інсталяції чи завантаження, яка може містити потрібні файли.
Василь Бурк

2

Якщо у вас встановлено locate (він же slocate), то

locate example.filename

Кожен вечір locate виконує завдання cron щовечора, що переробляє всі файли на вашій машині. З цієї причини це не завжди актуально.


2

Іноді потрібно знайти файли на певному рівні каталогу. У цьому випадку може бути зручно використовувати штрихові символи оболонки:

ls /data/*/example.filename

Очевидно, це працює лише в тому випадку, якщо у вас є жорстка структура каталогів.


1

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маршруту дозволяє уникнути цієї проблеми.



0

Я іноді так роблю


  find . | grep example.filename

напевно, дуже неефективно.


Так, це відповідає всім, тоді викидає все, крім того одного імені, яке ви шукали. Натомість ви можете просто зробити "find -name" example.filename "', який робить точно такі ж речі, не попередньо надрукувавши все та не запустивши додатковий процес grep.
Mihai Limbăşan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.