Locate vs Find Command on Linux

ในการใช้คำสั่งเพื่อแสดง Path ของไฟล์ เราสามารถทำได้หลายคำสั่ง เช่น Locate เพื่อแสดงที่อยู่ของไฟล์ หรือจะใช้ Find ในการค้นหา ซึ่งทั้งสองวิธีสามารถพิมพ์แค่ชื่อไฟล์ และไม่จำเป็นต้องอยู่ใน Directory ของไฟล์ด้วย ซึ่งเดี๋ยวมันจะไปหาให้เราเอง แน่นอนมันต้องต่างกันอยู่แล้ว แต่มันต่างกันยังไง


Syntax

  • Locate
locate [option] [filename]
 -b --basename :use patterns is search by match only
 -r --regexp :no use patterns is search by relular expression
  •  Find
find / [option] [parameter]
 -name :name of file or directory
 -type :type ex. file, directory, symbolic link, character or block device
 -size :size of file or directory

Compare

ซึ่งการทำงาน Locate จะทำงานเร็วกว่า เนื่องจากมันไม่ต้องไปอ่าน File System เพื่อทำการค้นหาชื่อ File หรือ Directory โดยมันจะทำเป็นเหมือนจัดเก็บไว้ในฐานข้อมูลเพื่อให้มาค้นหาในนี้แทน ซึ่งก็มีข้อเสียคือเวลามีการสร้าง File หรือ Directory ใหม่ ๆ จะต้องทำการอัพเดทข้อมูลในฐานข้อมูลด้วย ถ้าหากไม่ได้อัพเดทก็จะไม่สามารถหา File หรือ Directory ที่ถูกสร้างใหม่ได้

Get Started

  • มาลองทดสอบสร้างไฟล์ test.sql
# vi test.sql
  • จากนั้นใช้คำสั่ง locate เพื่อค้นหา Path ของไฟล์ ซึ่งเราจะไม่เห็น เนื่องจากยังไม่ได้ทำการอัพเดทฐานข้อมูล
# locate 'test.sql'
  • อัพเดทฐานข้อมูล หรือจะเขียน cron เพื่อให้อัพเดททุกวัน แล้วลองค้นหาด้วย locate อีกทีก็จะเจอแล้ว
# updatedb

อ่านเพิ่มเติม : https://bit.ly/2KmPIWA


Leave a Reply

Your email address will not be published. Required fields are marked *