Apa perbedaan antara 'temukan' dan 'temukan' di Linux?


Jawaban:


38

findmencari di sistem nyata. Lebih lambat tetapi selalu terkini dan memiliki lebih banyak opsi (ukuran, waktu modifikasi, ...)

locatemenggunakan database (perintah updatedb) yang dibangun sebelumnya . Jauh lebih cepat, tetapi menggunakan database 'lama' dan hanya mencari nama atau bagian dari mereka.

Bagaimanapun, man finddan man locateakan membantu Anda lebih lanjut.


1
... dan updatedbmelakukan kira-kira seperti itu find / -type f | gzip > locate.gz.
F. Hauri

10
unix.stackexchange.com/questions/60205/… menjawab pertanyaan ini lebih terinci.
gila tentang natty

3

Baik perintah locatedan findakan menemukan file, tetapi mereka bekerja dengan cara yang sangat berbeda.

locate akan berfungsi dalam mode offline:

  • Untuk penjelasan sederhana, basis data pengindeksan file dalam sistem Unix yang disebut slocate akan mencantumkan lokasi semua file yang dikirimkan dengan sistem Unix. Ketika Anda mengeksekusi locate, itu akan menggunakan database itu untuk mencari file tertentu. Masalahnya locateadalah jika Anda baru saja membuat file yang sekarang ingin Anda cari, cari tidak akan berfungsi karena database slocate tidak mutakhir. Untuk mengatasi masalah ini, Anda dapat menggunakan updatedbuntuk memperbarui database slocate . Eksekusi locatelagi sekarang akan menemukan file yang baru dibuat. Dengan demikian, banyak administrator sistem Linux menggunakan cronpekerjaan untuk secara teratur memperbarui database slocate .

find akan bekerja dalam mode online / "dalam waktu nyata".

  • Ini benar-benar akan pergi dan mencari semua direktori untuk menemukan file tertentu yang ditentukan dan memeriksa setiap file satu per satu. Oleh karena itu, memerlukan banyak panggilan I / O.

Jadi berdasarkan pada sifat, jelas bahwa lokasi lebih cepat daripada menemukan tetapi menemukan adalah waktu nyata.

Semoga ini bisa membantu menjernihkan idenya. Semua yang terbaik. :)


0

locate cukup melihat basis datanya dan melaporkan lokasi file.

find tidak menggunakan basis data, ia melintasi semua direktori dan sub direktori mereka dan mencari file yang cocok dengan kriteria yang diberikan.


0

Alternatif untuk menggunakan find adalah perintah loc. Perintah ini seringkali lebih cepat dan dapat mencari seluruh sistem file dengan mudah. Anda dapat menginstal perintah dengan apt-get:

sudo apt-get update
sudo apt-get install mlocate

Alasan mencari lebih cepat daripada menemukan adalah karena bergantung pada database file pada sistem file. Basis data biasanya diperbarui sekali sehari dengan skrip cron, tetapi Anda dapat memperbaruinya secara manual dengan mengetik:

sudo updatedb

Jalankan perintah ini sekarang. Ingat, basis data harus selalu terbaru jika Anda ingin menemukan file yang baru diperoleh atau dibuat.

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.