locate & updatedb - файли не знайдено


8

Я біг

sudo /usr/libexec/locate.updatedb

потім

locate Radium3

але нічого не повертає!

але

$ ls ~/Library/Containers/com.catpigstudios.Radium3/
Container.plist Data

То чому б не locateбачити всі файли?

Чи правильно я використовую цю команду в OS X?

Відповіді:


5

Спробуйте:

sudo /usr/libexec/locate.updatedb

І подивіться конфігурацію:

/etc/locate.rc файл конфігурації

Відредаговано:

Опублікувати тут вихід:

echo $LOCATE_CONFIG

І:

cat /etc/locate.rc

І:

echo $0

Оновлення:

https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/locate.1.html#//apple_ref/doc/man/1/locate

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

Спробуйте mdfind, а не знайдіть

Оновлено2:

mdfind -іменний текст, який є більш точним. Просто текст mdfind надає файли, що містять текст. - Девід Крмпатік

mdfind -name text

Я прокоментував #SEARCHPATHS="/"конфігурацію, це не допомогло. -vЗдається, варіант не дає ніякого додаткового результату: /
davidhq

Надайте додаткову інформацію для мене. У відповідь розділ "Відредаговано".
користувач3439968


1
$ ls -la /var/db/locate.database -r - r - r-- 1 колесо нікого 19463861 6 квітня 20:08 /var/db/locate.database $ locate david.jpg / Користувачі / david / temp /david.jpg
davidhq

1
вам слід оновити свою відповідь, mdfind -name textяка є точнішою. Просто mdfind textнадає файли, що містять текст.
davidhq

3

Винуватцем може бути дозвіл, оскільки locate, очевидно, не може читати файли, які не читаються у всьому світі. Дивіться цей відповідь на Plundra для більш докладного пояснення.

Пакет findutils від домашнього перекладу дозволяє включати gupdatedbі glocateкоманди, які, здається, подолають деякі обмеження вбудованих утиліт.


Дякую! але тепер, коли я знаю про те, mdutilчи є сенс перевірити це? Один із випадків використання, який я можу придумати, - це те, що я можу запустити пересканування вручну за gupdatedbдопомогою Spotlight не так просто, або це займе більше часу (він також індексує вміст файлів). Чи є інші переваги?
davidhq

1
Повторне введення в дію mdutil / reflight може зайняти певний час. updatedbшвидше для цього. glocateЗдається, немає проблем з індексацією системних файлів, в той час як я знаходжу mdfindігнорує ~ / Бібліотека та інші системні файли. Я безумовно вважаю , я отримати більше хітів з glocateза кадром mdfindв більшості випадків. YMMV.
VogonPoetLaureate

ок, я зараз тестую це. Я думаю, що я знайшов якусь проблему ... кулак я побіг sudo gupdatedb, а потім зберегли glocate Radiumвихід. Потім я побіг, gupdatedbі він сказав:, /.Trashes: Permission deniedте ж саме для деяких інших папок. Я порівняв вихід для обох, і це було однаково! Дивно ...
davidhq

З того, що ви говорите, ви спершу запускалися sudo gupdatedb(запускаєте його як root), потім пізніше ви працювали gupdatedbяк звичайний користувач, який би не мав доступу до файлів, до яких користувач root отримав би доступ, тобто ви отримаєте у дозволі відхилено помилки. Якщо ви хочете отримати повну базу даних файлів для всієї вашої системи, продовжуйте запускати її як root. Це відкриває ваші файли іншим користувачам системи, які можуть використовувати glocateкоманду. Але якщо ви єдиний користувач, це повинно бути добре.
VogonPoetLaureate

2

Якщо ви хочете шукати ту саму базу даних, яку використовує Spotlight, ви можете використовувати mdfindкоманду як альтернативу (хоча не точну заміну) для locate:

mdfind Radius3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.