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?

telnet
sumber
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.

Paweł Brodacki
sumber
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>
kuanta
sumber
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 ...

gharper
sumber
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.

kenorb
sumber