'Bul' hızını artırmanın bir yolu var mı


15

findTerminal hızını artırmak için bir yol olduğunu merak ediyorum, arama için internet google kullanarak dizeleri veya sadece dosya adları için yerel bir arama yapmak daha iyi bir hıza sahip olacağını anlamıyorum.

Yerel bir indeksleme tabanına sahip olmanın bir yolu olduğunu merak ediyorum, inşa edildikten sonra, gelecekte find komutu süper hızlı olabilir.

Veya başka bir öneriniz var mı?

Teşekkürler!


Yayınınızı işletim sisteminiz ve / veya dağıtımınızla düzenleyebilir misiniz?
Jodie C

Yanıtlar:


15

Kullanmayı deneyin locate, istediğinizi yapmalısınız.


13
Cevabı biraz daha fazla çıkarmak genellikle iyi bir fikirdir. Hangi paketin locate(genellikle slocate) geldiğinden bahsetmek ve updatedbDB'yi yeniden oluşturmak için kullanmak gibi . :-)
Patrick

1
Dizin oluşturma özelliği kapalı olan bölümler için çalışmaz. Örneğin, dizin oluşturma etkinleştirildiyse NTFS bölümleri düşük performansa maruz kalır, bu nedenle konum bulma işlemi "olması gerektiği gibi" çalışmaz.
15:52

9

Bu, arama ölçütlerinizin ne olduğuna bağlıdır.

Dosya adları veya dosya adı kalıpları ararsanız, kullanılan dizin normalde günde yalnızca bir kez güncellendiğinden, konum bulma çok daha hızlıdır, ancak yeni oluşturulan dosyalar için uygun değildir. Ama eğer kullanabiliyorsanız, süper hızlı.

Ancak find ile dosya boyutu, dosya yaşı ve yerini bulmak için aranamayan diğer şeyleri arayabilirsiniz.

Nerede arama yapacağınızı biliyorsanız , arama kapsamını sınırlamak için yolu kullanabilirsiniz :

find /some/path -size -10M -size +2M -mtime -365 ...

yalnızca 2 ile 10 M arasında, maksimum 1 yaşında / some / path dosyalarında arama yapar.

Yolda bulunan programlar aranabilir, hangi ile help, lib ve yapılandırma dosyaları whereis. Örnekler:

which java
/usr/bin/java

whereis firefox 
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz

7

kullanım locate

Bunun nedeni, halihazırda hayal ettiğiniz gibi oluşturulmuş locateolan tüm dizinlerin ve dosyaların bir veritabanını kullanmasıdır ! http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm

Bazı ayarlanmış (ve değiştirilebilir) aralıklarla, bir iş çalışır dosya sistemini tarar ve onunla bir veritabanı oluşturur. O zaman bu veritabanı (locatedb), uygun dizinleri locateile o noktada sabit sürücünüzü taramak yerine komutun karşı karşıya gelmesidir .

Yani, sabit disk taramasına kıyasla çok hızlı olması. Dezavantajı, yer bulma veritabanının (locatedb) 'canlı' olmamasıdır, bu nedenle yalnızca son taramadan itibaren var olan dosyalar için kullanılabilir.

Locatedb'yi güncellemek için şimdi çalıştırın updatedb(veya sudo updatedbgerekirse)

btw Sadece sudo updatedbyerel olarak koştu ve 3 1/2 saniye sürdü! 31.000 dosyam var.


1

Diğerlerinin de belirttiği gibi, bulma daha basit arama yapan kullanıcılar için daha iyi bir araç olabilir.

Ancak, daha karmaşık aramalar için büyük olasılıkla bulmak zorunda kalırsınız.

Bulmayı hızlandırmanın bir yolu, tüm kök dizini aramak yerine dosyalarınızın hangi dizinde olduğunu daraltmaktır.


0

tek bir arama işlemi için; Hiç hızlanma bulamadım; findseçenekleri kullanarak aramayı daraltmaya çalışmadığınız sürece .

Ancak; aynı dosya kümesinde birden çok findişlem yapmak istiyorsanız ; Tüm dosya adları ile geçici bir dosyayı doldurmak ve kullanmak önemli bir hızlanma var grep. Elbette bu, eklenen veya silinen dosyaları dikkate almaz.

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.