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

41

Mengapa ada dua perintah yang sangat mirip di Linux? dan biasanya keadaan apa yang digunakan masing-masing?

zhanwu
sumber
6
Untuk jawaban yang lebih baik di kedalaman dan kelengkapan, lihat jawaban ini di Unix & Linux .
Orang Brazil itu,

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.

eumiro
sumber
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. :)

kazi Tanvir Ahsan
sumber
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.

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

m-tech
sumber