เหตุใดจึงมีคำสั่งที่คล้ายกันสองคำสั่งใน Linux และตามปกติแล้วสถานการณ์ใดที่จะใช้แต่ละสถานการณ์
เหตุใดจึงมีคำสั่งที่คล้ายกันสองคำสั่งใน Linux และตามปกติแล้วสถานการณ์ใดที่จะใช้แต่ละสถานการณ์
คำตอบ:
findค้นหาในระบบจริง ช้าลง แต่ทันสมัยอยู่เสมอและมีตัวเลือกเพิ่มเติม (ขนาดเวลาการแก้ไข ... )
locateใช้ฐานข้อมูลที่สร้างขึ้นก่อนหน้านี้ (คำสั่งupdatedb) เร็วกว่ามาก แต่ใช้ฐานข้อมูล 'ที่เก่ากว่า' และค้นหาเฉพาะชื่อหรือส่วนของพวกเขา
ไม่ว่าในกรณีใดman findและman locateจะช่วยให้คุณต่อไป
updatedbไม่ประมาณ someting find / -type f | gzip > locate.gzเช่น
ทั้งคำสั่งlocateและfindคำสั่งจะค้นหาไฟล์ แต่มันทำงานได้หลายวิธี
locate จะทำงานในโหมดออฟไลน์:
locateมันจะใช้ฐานข้อมูลนั้นเพื่อค้นหาไฟล์เฉพาะ ปัญหาlocateคือถ้าคุณเพิ่งสร้างไฟล์ที่คุณต้องการค้นหาตอนนี้ค้นหาจะไม่ทำงานเพราะฐานข้อมูลslocateไม่ทันสมัย เพื่อแก้ไขปัญหานี้คุณสามารถใช้updatedbเพื่ออัพเดตฐานข้อมูลslocate การเรียกใช้งานlocateอีกครั้งจะพบไฟล์ที่สร้างขึ้นใหม่ ดังนั้นผู้ดูแลระบบ Linux หลายคนใช้cronงานเพื่ออัพเดทฐานข้อมูลslocateเป็นประจำfind จะทำงานในโหมดออนไลน์ / "แบบเรียลไทม์"
ดังนั้นตามธรรมชาติจึงเป็นที่ชัดเจนว่าการค้นหานั้นเร็วกว่าการค้นหา แต่การค้นหานั้นเป็นเวลาจริง
หวังว่านี่จะช่วยล้างความคิด ทั้งหมดที่ดีที่สุด :)
locate เพียงดูฐานข้อมูลและรายงานตำแหน่งไฟล์
find ไม่ใช้ฐานข้อมูลมันจะสำรวจไดเรกทอรีและไดเรกทอรีย่อยทั้งหมดและค้นหาไฟล์ที่ตรงกับเกณฑ์ที่กำหนด
ทางเลือกอื่นในการใช้การค้นหาคือคำสั่งค้นหา คำสั่งนี้มักจะเร็วกว่าและสามารถค้นหาระบบไฟล์ทั้งหมดได้อย่างง่ายดาย คุณสามารถติดตั้งคำสั่งด้วย apt-get:
sudo apt-get update
sudo apt-get install mlocate
เหตุผลในการค้นหานั้นเร็วกว่าการค้นหาเนื่องจากมันอาศัยฐานข้อมูลของไฟล์ในระบบไฟล์ โดยปกติฐานข้อมูลจะได้รับการอัปเดตวันละครั้งด้วยสคริปต์ cron แต่คุณสามารถอัปเดตได้ด้วยตนเองโดยพิมพ์:
sudo updatedb
รันคำสั่งนี้ทันที โปรดจำไว้ว่าฐานข้อมูลต้องเป็นข้อมูลล่าสุดเสมอหากคุณต้องการค้นหาไฟล์ที่เพิ่งได้มาหรือสร้าง