Soru Belirtilen dizinde yer komutunu nasıl kullanırım?


Kullanıyorum locate Linux'ta komut. Şu anki kullanımım tüm dosya sistemi üzerinden arama yapıyor. Sadece belirli bir dizinde arama yapmasını istiyorum. Bunu nasıl yapabilirim?


15
2017-09-21 02:18


Menşei


TLDR: İşte bir terminal takma adıdır locate Belirtilen bir dizinde arama yapın: alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "  Takma ad etkin olduğunda, terminal türünde my_locate *foo* ve sen yarışlara gidiyorsun. Veritabanı güncellemelerini birleştirebilir ve veritabanlarını daraltmak için kolon karakterini kullanarak arama yapabilirsiniz. KKO: linux.die.net/man/8/updatedb - Eric Leschinski


Cevaplar:


Başka bir yaklaşım, desen eşlemesini kullanmaktır. locate:

locate '/some/directory/*filename*'

Aşağıdaki komutların çıktısı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.


10
2017-09-21 04:02



+1 Doğru cevap budur. Joker karakterini eklerseniz sınırların düzeltildiğini unutmayın. Yukarıdaki örnekte, $ locate '/usr/lib64/*tmpfile' sonuç vermeyecek. - xofer
Basit joker karakterlerin sunabileceğinden daha fazla kontrol istiyorsanız, sonuçları her zaman aktarabilirsiniz. locate vasitasiyla grep. - Ladadadada


Belirli dizininiz için slogan veri tabanı oluşturun:

updatedb -U /path/to/directory

ve ile ara:

locate <search_string>

GÜNCELLEŞTİRME

Bu benim Gentoo sistemimde iyi çalışıyor ancak CentOS şunları içermiyor -U seçeneği. Yani, yerine aşağıda deneyebilirsiniz:

Veritabanını şu şekilde oluşturun:

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

ve ara:

# locate -d dir_locate.db <search_string>

5
2017-09-21 02:28



"-U" konumunu geçersiz bir seçenek hatası atar ... Tahmin "updatedb -U" demek istediniz? Ayrıca başka bir dizin aramak istiyorsanız, bu bir mlocate.db rebuild (updatedb) gerektirir unutmayın. - gharper
Oh, Gentoo'mda iyi çalışıyor ama CentOS bu seçeneği içermiyor. - quanta
Aşağı oy? Yorum bırakabilir misiniz? - quanta
Eğer böyle bir hata varsa updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted, Kontrol linux üzerinde sıradan bir kullanıcı olarak updatedb komutu nasıl kullanılır. - kenorb


Düşünebildiğim en basit cevap

locate search_term | grep "/specified/directory"

Daha iyi bir çözüm, “bul” ve yol seçeneklerini kullanmak olabilir.


2
2017-09-21 02:23





En kolay yol, aşağıdaki örnekte olduğu gibidir:

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

Değişiklik $PWD özel dizininize.

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


0
2017-10-18 18:07