Linux'un Mac için updatedb komutunun karşılığı nedir?


234

Bu locatekomutu bir Linux makinesinde kullanmak istersem , genellikle sudo updatedbveritabanını güncellemek için önce çalıştırırım . locateKomutu OS X 10.5'te çalıştırabilirim ancak bulamıyorum updatedb. Mac için karşılık gelen updatedb nedir?


İyi upableb ve bulun güzel şeyler ama düzenli olarak updatedb komutunu çalıştırmaları gerekiyor (her gün updatedb düzenli çalışır ve bu durum uygun olmayan zamanlarda sisteminizi yavaşlatır veya bulun artık dosyalarda bulunmayan dosyalara yapılan referansları gösterir). Bu yüzden, locate / updatedb'yi kurmak yerine (çok daha güçlü) bulmaya aşina olmanın daha iyi olacağını düşünüyorum.
amo-ej1

9
Bul çok şey için faydalı olsa da, her seferinde dosya sisteminden geçmesi gerekir. Baktığınız yerleri daraltabilirseniz, sorun değil. Konumlandırmanın avantajı, kendi veritabanını tutmasıdır ve bu nedenle her seferinde arama yapmanız gerekmez. Bu özellikle büyük ve / veya uzak dosya sistemlerinde önemlidir. Her birinin bir yeri olduğunu düşünüyorum.
KeithB

1
locateOS X kutusunda ilk çalıştırdığınızda , çalıştırmanızı söyler sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist.
Török Gábor

12
Ne kullanmanız gerektiğine bağlı olarak , Spotlight veritabanı neredeyse her zaman güncel olduğundan ve konumlandırmaktan çok daha fazla işlevsellik sunduğundan locate, komut satırı arabirimini Spotlight'a kullanmayı daha uygun mdfindbulabilirsiniz. man mdfind
Paul R

Yanıtlar:


327

Bu var locate.updatedbMac üzerinde.

sudo / usr/libexec/locate.updatedb

Daha fazla bilgi için locate.updatedb kılavuz sayfasına bakınız .


9
Bu mansayfa ayrıca şunları da iddia eder: Genellikle /System/Library/LaunchDaemons/com.apple.locate.plist işi tarafından haftada bir kez çalıştırılır. (Ve man locatebu komut dosyası hakkında bir tane söyler: /usr/libexec/locate.updatedb Konum bulma veritabanını güncellemek için komut dosyası )
Arjan

5
@Arjan: Bu haftada bir kez çalıştırmak, ancak varsayılan devre dışı olduğunu ve bunun yapılması gerektiğini zaman :) gerçekten yararlı değildir Pazar (veya benzer bir şey) üzerinde 03:00 olduğunu edilmelidir
Studer

Linux'ta genellikle , g / Ç denetleyicisini güzelce paylaşmayı sudo ionice -c3 updatedbsöyleyen updatedb(io nice) komutları çalıştırıyorum, ancak bu komutun mac'ta kullanılabileceğini sanmıyorum. Ayrıca sahip özledim -rben @Grogs tarafından bahsedilen yeri bulunamıyor homebrewleri kullanmak ve GNU'yu yüklemek istediğiniz emin değilim ancak GNU yerini kullanılabilir düzenli ifade bayrak
cwd

3
Spotlight ("-i" elbette isteğe bağlı) kullanan "locate (-r)" ve "updatedb" ye örnek macosx alternatifi: mdfind -name "mp4" | egrep -i "^ / Kullanıcılar. * İndirilenler /.* Sayfalar"
michael

Ayrıca, eğer yok sen ait BÖCEK bölümünden bu ilgili ihtar not bekliyoruz dosyaları bulmak manpage : The 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
Ashutosh Jindal

85

Komutu kullanılabilir yapmak sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedbiçin yapabilirsiniz updatedb.


Heh, bunu sadece bir yorum olarak gönderdim .. Sonra bunu söylediğini gördüm. Bence bu yapmak için güzel bir mod. :)
James T Snell

3
ya da takma adınızla .bash_profile
Jim Johnson,

19

Şahsen ben sadece findutils kurdum (MacPorts veya Homebrew kullanın).

O zaman GNU’yu bulup güncellenmişsiniz.

updatedb sudo olmadan çalışmayacak.

Şahsen ben kullanıcı başına başına bir kullanıcı bulunmasını tercih ederim; Sudo yaparsanız diğer kullanıcılar tüm dosyalarınızın adlarını / yerlerini bileceklerdir.

Çalıştırmak için bir cron işim var:

updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'

Ve benim .zshrc .bashrc / .bashprofile dosyamda:

export LOCATE_PATH="~/tmp/locatedb"


3
OS X Mavericks'teki demiryolları kurulum bulguları bana bir gupdatedbkomut verdi , bir updatedbtane değil . Maalesef, bu komut bana burada açıklanan bir hata verdi (SO cevabınıza referans verilir). Sonuçta ben başka ad ettik updatedbiçin LC_ALL=’C’ sudo updatedbgeçici bir çözüm olarak, ancak bu uzun vadeli bir çözüm olup olmadığını bilmiyorum.
David Rivers,

2
Ekle /opt/local/libexec/gnubinİstersen senin yolunun başında coreutilsve findutilstarafından yüklenen macportsorijinal adlarıyla (ve onların birlikte kullanılabilir olmasını g-prefixed sürümleri).
Ioannis Filippidis

2

İlk önce veritabanını güncellemeden çalıştırmayı çalıştırırsanız, işletim sisteminin önerdiği yolu çıktılarına göre görme şansınız olur.

WARNING: The locate database (/var/db/locate.database) does not exist.
To create the database, run the following command:

  sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.