Bagaimana cara menggunakan perintah temukan dalam direktori yang ditentukan?


16

Saya menggunakan locateperintah di Linux. Penggunaan saya saat ini mencari melalui seluruh sistem file. Saya hanya ingin mencari dalam direktori tertentu. Bagaimana saya bisa melakukan ini?


TLDR: Ini adalah alias terminal untuk melakukan locatepencarian dalam direktori yang ditentukan: alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " Setelah alias efektif, pada jenis terminal my_locate *foo*dan Anda akan pergi ke balapan. Anda dapat menyatukan pembaruan basis data dan menemukan pencarian dengan menggunakan karakter titik dua ke basis data concat. rtfm: linux.die.net/man/8/updatedb
Eric Leschinski

Jawaban:


11

Pendekatan lain adalah dengan menggunakan pencocokan pola di locate:

locate '/some/directory/*filename*'

Bandingkan output dari perintah di bawah ini:

$ 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* memberikan hasil yang sama.


3
+1 Ini adalah jawaban yang benar. Perhatikan bahwa jika Anda memasukkan wildcard, batas menjadi tetap. Itu dalam contoh di atas, tidak $ locate '/usr/lib64/*tmpfile'akan mengembalikan hasil.
xofer

Jika Anda ingin lebih banyak kontrol daripada yang bisa diberikan wildcard sederhana, Anda selalu dapat menyalurkan hasil locatemelalui grep.
Ladadadada

5

Buat database slocate untuk direktori spesifik Anda dengan:

updatedb -U /path/to/directory

dan cari dengan:

locate <search_string>

MEMPERBARUI

Ini berfungsi baik pada sistem Gentoo saya tetapi CentOS tidak menyertakan -Uopsi. Jadi, Anda dapat mencoba di bawah ini sebagai gantinya:

Bangun basis data dengan:

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

dan cari:

# locate -d dir_locate.db <search_string>

3
"loc -U" menampilkan kesalahan opsi yang tidak valid ... Mengira Anda bermaksud "updatedb -U"? Juga baik untuk dicatat bahwa ini membutuhkan mlocate.db membangun kembali (updatedb) jika Anda ingin mencari direktori lain.
gharper

Oh, di Gentoo saya berfungsi dengan baik tetapi CentOS tidak menyertakan opsi ini.
quanta

Tidak memilih? Bisakah Anda memberikan komentar?
quanta

Jika Anda memiliki kesalahan seperti :,updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted periksa cara menggunakan perintah updatedb sebagai pengguna biasa di linux .
kenorb

2

Jawaban paling sederhana yang bisa saya pikirkan adalah

locate search_term | grep "/specified/directory"

Solusi yang lebih baik mungkin menggunakan "find" dan opsi path-nya ...


0

Cara termudah adalah seperti pada contoh berikut:

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

Ubah $PWDke direktori spesifik Anda.

Contoh di atas hanya akan membuat basis data lokal Anda untuk direktori tertentu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.