Linux'ta 'bul' ve 'bul' arasındaki fark nedir?


Yanıtlar:


38

findgerçek sistemde arar. Daha yavaş ama her zaman güncel ve daha fazla seçeneğe sahip (boyut, değişiklik zamanı, ...)

locateönceden inşa edilmiş bir veritabanı (komut updatedb) kullanır. Çok daha hızlıdır, ancak 'daha eski' bir veritabanı kullanır ve yalnızca adlarını veya parçalarını arar.

Her durumda man findve man locatesize daha fazla yardımcı olacaktır.


1
... ve updatedbkabaca bir şeyler yapın find / -type f | gzip > locate.gz.
F. Hauri

10
unix.stackexchange.com/questions/60205/… bu soruyu daha ayrıntılı olarak cevaplıyor.
natty

3

Hem de locatehem de findkomutlar bir dosya bulur, ancak oldukça farklı şekillerde çalışırlar.

locate çevrimdışı modda çalışacak:

  • Basit bir açıklama için, Unix sistemindeki slocate adlı dosya indeksleme veritabanı, Unix sistemiyle birlikte gelen tüm dosyaların konumlarını listeleyecektir. Çalıştırdığınızda locate, belirli bir dosyayı aramak için bu veritabanını kullanır. Sorun locatesadece şimdilik aramak istediğiniz bir dosya oluşturdum eğer olduğunu bulmak olmaz iş çünkü slocate veritabanı yukarı güncel değil. Bu sorunun üstesinden gelmek updatedbiçin, eğimli veritabanını güncellemek için kullanabilirsiniz . locateTekrar çalıştırıldığında yeni oluşturulan dosyayı bulacaksınız. Bu nedenle, birçok Linux sistem yöneticisi cron, slocate veritabanını düzenli olarak güncellemek için bir iş kullanır .

find çevrimiçi / "gerçek zamanlı" modda çalışacaktır.

  • Belirtilen dosyayı bulmak için tüm dizinleri araştıracak ve her dosyayı tek tek inceleyecek. Bu nedenle, çok fazla G / Ç çağrısı gerektirir.

Dolayısıyla, doğaya dayanarak, konumlandırmanın bulmaktan daha hızlı olduğu ancak bulmanın gerçek zaman olduğu açıktır.

Umarım bu fikir temizlemeye yardımcı olur. Herşey gönlünce olsun. :)


0

locate basitçe veritabanına bakar ve dosya konumunu bildirir.

find bir veritabanı kullanmaz, tüm dizinleri ve alt dizinlerini geçer ve verilen kritere uyan dosyaları arar.


0

Find komutunu kullanmanın bir alternatifi, locate komutudur. Bu komut genellikle daha hızlıdır ve tüm dosya sistemini kolaylıkla arayabilir. Komutu apt-get ile kurabilirsiniz:

sudo apt-get update
sudo apt-get install mlocate

Bulmanın sebebi bulmaktan daha hızlı olmasının nedeni, dosya sistemindeki dosyaların veritabanına dayanmasıdır. Veritabanı genellikle bir cron betiği ile günde bir kez güncellenir, ancak şunu yazarak elle güncelleyebilirsiniz:

sudo updatedb

Bu komutu şimdi çalıştır. Unutmayın, yakın zamanda edinilmiş veya oluşturulan dosyaları bulmak istiyorsanız, veritabanı daima güncel olmalıdır.

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.