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.