cari & updatedb - file tidak ditemukan

8

Saya berlari

sudo /usr/libexec/locate.updatedb

kemudian

locate Radium3

tetapi tidak mengembalikan apa-apa!

tapi

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

Jadi mengapa tidak locatemelihat semua file?

Apakah saya menggunakan perintah ini dengan benar di OS X?

davidhq
sumber

Jawaban:

5

Mencoba:

sudo /usr/libexec/locate.updatedb

Dan lihat konfigurasi:

/etc/locate.rc file konfigurasi

Diedit:

Poskan di sini keluaran:

echo $LOCATE_CONFIG

Dan:

cat /etc/locate.rc

Dan:

echo $0

Memperbarui:

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

Program cari mencari basis data untuk semua nama path yang cocok dengan pola yang ditentukan. Basis data basis data basis dihitung ulang secara berkala (biasanya mingguan atau harian), dan berisi nama path semua file yang dapat diakses publik .

Coba mdfind sebagai gantinya cari

Diperbarui2:

mdfind -nama teks yang lebih akurat. Hanya teks mdfind memberi Anda file yang mengandung teks juga. - David Krmpotic

mdfind -name text
pengguna3439968
sumber
Saya menghapus komentar #SEARCHPATHS="/"dalam konfigurasi, itu tidak membantu. -vOpsi tampaknya tidak menghasilkan output tambahan: /
davidhq
Berikan info tambahan untuk saya, tlg. Di jawaban "Diedit".
user3439968
1
$ ls -la /var/db/locate.database -r - r - r-- 1 tidak ada roda 19463861 6 Apr 20 20:08 /var/db/locate.database $ temukan david.jpg / Users / david / temp /david.jpg
davidhq
1
Anda harus memperbarui jawaban Anda mdfind -name textyang lebih akurat. Hanya mdfind textmemberi Anda file yang mengandung teks juga.
davidhq
3

Izin mungkin menjadi penyebab karena lokasi tampaknya tidak dapat membaca file yang tidak dapat dibaca dunia. Lihat jawaban ini oleh Plundra untuk penjelasan lebih lanjut.

The findutils paket dari homebrew tidak memungkinkan gupdatedbdan glocateperintah yang tampaknya untuk mengatasi beberapa keterbatasan utilitas builtin.

VogonPoetLaureate
sumber
Terima kasih! tetapi sekarang saya tahu tentang mdutilapakah masuk akal untuk memeriksa ini? Satu kasus penggunaan yang dapat saya pikirkan adalah bahwa saya dapat memicu memindai ulang secara manual dengan gupdatedb- dengan Spotlight tidak begitu mudah atau akan membutuhkan waktu lebih lama (juga mengindeks isi file). Apakah ada kelebihan lain?
davidhq
1
Mengindeks ulang dengan mdutil / lampu sorot dapat berlangsung cukup lama. updatedblebih cepat untuk itu. glocatetampaknya tidak memiliki masalah pengindeksan file sistem, sementara saya menemukan mdfindmengabaikan ~ / Perpustakaan dan file sistem lainnya. Saya pasti menemukan saya mendapatkan lebih banyak hits dengan glocatelebih mdfinddalam sebagian besar keadaan. YMMV.
VogonPoetLaureate
ok, saya sedang menguji ini sekarang. Saya pikir saya menemukan beberapa masalah ... kepalan tangan saya berlari sudo gupdatedb, kemudian menyimpan glocate Radiumoutput. Lalu aku berlari gupdatedbdan berkata:, /.Trashes: Permission deniedsama untuk beberapa folder lain. Saya membandingkan output untuk keduanya dan itu sama! Aneh ...
davidhq
Dari apa yang Anda katakan, Anda pertama kali berlari sudo gupdatedb(menjalankannya sebagai root), kemudian Anda menindaklanjutinya dengan menjalankannya gupdatedbsebagai pengguna biasa yang tidak akan memiliki akses ke file yang akan diakses oleh pengguna root, artinya Anda akan mendapatkan izin ditolak kesalahan. Jika Anda ingin database lengkap nama file untuk seluruh sistem Anda, tetap jalankan sebagai root. Ini mengekspos file Anda ke pengguna lain pada sistem yang dapat menggunakan glocateperintah. Tetapi jika Anda adalah satu-satunya pengguna, itu tidak masalah.
VogonPoetLaureate
2

Jika Anda ingin mencari database yang sama yang digunakan Spotlight, Anda dapat menggunakan mdfindperintah sebagai alternatif (meskipun bukan pengganti yang tepat) untuk locate:

mdfind Radius3
dgn kasar
sumber