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:
+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:
"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.
locate
pencarian 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 terminalmy_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/updatedbJawaban:
Pendekatan lain adalah dengan menggunakan pencocokan pola di
locate
:Bandingkan output dari perintah di bawah ini:
locate /usr/lib*tmpfile*
memberikan hasil yang sama.sumber
$ locate '/usr/lib64/*tmpfile'
akan mengembalikan hasil.locate
melaluigrep
.Buat database slocate untuk direktori spesifik Anda dengan:
dan cari dengan:
MEMPERBARUI
Ini berfungsi baik pada sistem Gentoo saya tetapi CentOS tidak menyertakan
-U
opsi. Jadi, Anda dapat mencoba di bawah ini sebagai gantinya:Bangun basis data dengan:
dan cari:
sumber
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 .Jawaban paling sederhana yang bisa saya pikirkan adalah
Solusi yang lebih baik mungkin menggunakan "find" dan opsi path-nya ...
sumber
Cara termudah adalah seperti pada contoh berikut:
Ubah
$PWD
ke direktori spesifik Anda.Contoh di atas hanya akan membuat basis data lokal Anda untuk direktori tertentu.
sumber