Belirli bir dizinde locate komutunu nasıl kullanırım?


16

locateLinux'ta komutu kullanıyorum . Şu anki kullanımım tüm dosya sistemini araştırıyor. Sadece belirli bir dizinde arama yapmasını istiyorum. Bunu nasıl yapabilirim?


TLDR: locateBelirtilen bir dizinde arama yapmak için bir terminal diğer adı : Diğer alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " ad etkili olduğunda, terminal türünde my_locate *foo*ve yarışlara gidiyorsunuz. Veritabanı güncellemelerini birleştirebilir ve veritabanlarını birleştirmek için iki nokta üst üste karakterini kullanarak aramayı bulabilirsiniz. rtfm: linux.die.net/man/8/updatedb
Eric Leschinski

Yanıtlar:


11

Başka bir yaklaşım, desen eşleşmesini şu alanlarda kullanmak olacaktır locate:

locate '/some/directory/*filename*'

Aşağıdaki komutların çıktılarını karşılaştırın:

$ locate tmpfile
/usr/lib64/perl5/auto/POSIX/tmpfile.al
/usr/share/man/fr/man3/tmpfile.3.gz
/usr/share/man/ja/man3/tmpfile.3.gz
/usr/share/man/man3/tmpfile.3.gz
/usr/share/man/man3p/tmpfile.3p.gz
$
$ locate '/usr/lib64/*tmpfile*'
/usr/lib64/perl5/auto/POSIX/tmpfile.al
$ 

locate /usr/lib*tmpfile* aynı sonucu verir.


3
+1 Bu doğru cevap. Joker karakter eklerseniz, sınırların düzeltileceğini unutmayın. Yukarıdaki örnekte, $ locate '/usr/lib64/*tmpfile'hiçbir sonuç döndürmez.
xofer

Basit joker karakterlerin sunabileceğinden daha fazla kontrol istiyorsanız, sonuçları her zaman locateaktarabilirsiniz grep.
Ladadadada

5

Şu dizininiz için slocate veritabanı oluşturun:

updatedb -U /path/to/directory

ve şununla ara:

locate <search_string>

GÜNCELLEME

Bu, Gentoo sistemimde iyi çalışıyor ancak CentOS -Useçeneği içermiyor . Bunun yerine aşağıda deneyebilirsiniz:

Veritabanını şununla oluşturun:

# updatedb -U /path/to/dir -o dir_locate.db

ve arama:

# locate -d dir_locate.db <search_string>

3
"locate -U" geçersiz bir seçenek hatası veriyor ... "updatedb -U" demek istediğini tahmin? Ayrıca başka bir dizini aramak istiyorsanız bu bir mlocate.db rebuild (updatedb) gerektirir unutmayın.
gharper

Oh, Gentoo'mda iyi çalışıyor, ancak CentOS bu seçeneği içermiyor.
quanta

Aşağı oy? Lütfen yorum bırakabilir misiniz?
quanta

Şunun gibi bir hatayla karşılaşırsanız: linux'da updatedb komutunun normal bir kullanıcı olarak nasıl kullanılacağınıupdatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted kontrol edin .
kenorb

2

Aklıma gelen en basit cevap

locate search_term | grep "/specified/directory"

"Bul" ve yol seçeneklerini kullanmak daha iyi bir çözüm olabilir ...


0

En kolay yol aşağıdaki örnekteki gibidir:

updatedb -o ~/tmp.db -l0 -U $PWD
locate   -d ~/tmp.db "foo"

$PWDÖzel dizininize değiştirin .

Yukarıdaki örnekte, yerel veritabanınızı yalnızca belirli bir dizin için oluşturabilirsiniz.

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.