Jika saya ingin menggunakan locate
perintah pada mesin Linux, saya biasanya menjalankan sudo updatedb
pertama untuk memperbarui database. Saya dapat menjalankan locate
perintah pada OS X 10.5 tetapi saya tidak dapat menemukannya updatedb
. Apa updateb yang sesuai untuk mac?
234
locate
pada kotak OS X ia memberi tahu Anda untuk menjalankansudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
.locate
, Anda mungkin merasa lebih nyaman untuk menggunakan antarmuka baris perintah ke Spotlightmdfind
,, karena basis data Spotlight hampir selalu terkini, dan menawarkan fungsionalitas yang jauh lebih banyak daripada mencari.man mdfind
Jawaban:
Ada
locate.updatedb
di Mac.Untuk informasi lebih lanjut, lihat halaman manual loc.updatedb .
sumber
man
halaman juga mengklaim: Hal ini biasanya dijalankan sekali seminggu dengan pekerjaan /System/Library/LaunchDaemons/com.apple.locate.plist. (Danman locate
memberi tahu seseorang tentang skrip itu: /usr/libexec/locate.updatedb Script untuk memperbarui database cari )sudo ionice -c3 updatedb
yang memberitahu sayaupdatedb
untuk berbagi pengontrol i / o dengan baik (io bagus) tapi saya tidak berpikir perintah ini tersedia di mac. Saya juga merindukan memiliki-r
flag ekspresi reguler yang dapat digunakan dengan lokasi GNU, walaupun saya tidak yakin saya ingin menggunakan homebrew dan menginstal lokasi GNU yang disebutkan oleh @GrogsThe locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database
Anda dapat melakukannya
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
untuk membuatupdatedb
perintah tersedia.sumber
Secara pribadi, saya baru saja menginstal findutils (gunakan MacPorts atau Homebrew).
Kemudian Anda memiliki GNU untuk mencari dan memperbaruib.
updatedb tidak akan berfungsi tanpa sudo.
Secara pribadi saya lebih suka memiliki per pengguna yang berlokasi; jika Anda sudo pengguna lain akan tahu nama / lokasi semua file Anda.
Saya memiliki tugas cron untuk dijalankan:
updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'
Dan di .zshrc .bashrc / .bashprofile saya:
export LOCATE_PATH="~/tmp/locatedb"
sumber
gupdatedb
perintah, bukan perintahupdatedb
. Sayangnya perintah ini memberi saya kesalahan yang dijelaskan di sini (di mana jawaban SO Anda dirujuk). Pada akhirnya saya aliasupdatedb
untukLC_ALL=’C’ sudo updatedb
sebagai solusi, tapi saya tidak tahu apakah ini adalah solusi jangka panjang./opt/local/libexec/gnubin
di awal jalan Anda, jika Anda ingincoreutils
danfindutils
diinstal olehmacports
agar tersedia dengan nama asli mereka (dan bukang
versi -prefixed mereka ).Jika Anda menjalankan mencari tanpa memperbarui database terlebih dahulu, Anda memiliki kesempatan untuk melihat cara yang disarankan OS dari outputnya.
sumber