ค้นหาเว็บไซต์

วิธีใช้คำสั่ง 'ค้นหา' เพื่อค้นหาไดเร็กทอรีอย่างมีประสิทธิภาพยิ่งขึ้น


บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับวิธีต่างๆ ในการค้นหาไดเร็กทอรีใน Linux ดังที่คุณอาจทราบแล้วว่าใน Linux ทุกอย่างเป็นไฟล์รวมถึงไดเร็กทอรีด้วย และสิ่งหนึ่งที่ผู้ใช้ Linux จะทำภายในบรรทัดคำสั่งคือการค้นหาไฟล์หรือไดเร็กทอรี

มีวิธีการและยูทิลิตีที่แตกต่างกันหลายวิธีที่ใช้สำหรับการค้นหาไฟล์บนบรรทัดคำสั่ง เช่น ค้นหา ค้นหา และ ซึ่ง อย่างไรก็ตาม ยูทิลิตีสุดท้าย (ซึ่ง) ใช้สำหรับค้นหาคำสั่งเท่านั้น

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

ข้อเสียของ ตำแหน่ง คือสามารถอ่านฐานข้อมูลตั้งแต่หนึ่งฐานข้อมูลขึ้นไปที่สร้างโดย updatedb แต่ไม่ได้ค้นหาผ่านระบบไฟล์ที่ใช้งานจริง นอกจากนี้ยังไม่มีความยืดหยุ่นในการค้นหาจากที่ใด (จุดเริ่มต้น)

ด้านล่างนี้คือไวยากรณ์สำหรับการรันคำสั่ง locate:

locate [option] [search-pattern]

เพื่อแสดงให้เห็นถึงข้อเสียของ ตำแหน่ง ให้เราสมมติว่าเรากำลังค้นหาไดเรกทอรีชื่อ pkg ในไดเรกทอรีการทำงานปัจจุบัน

หมายเหตุ: ในคำสั่งด้านล่าง ตัวเลือก --basename หรือ -b จะบอก locate< เพื่อจับคู่เฉพาะชื่อฐานของไฟล์ (ไดเรกทอรี) (ซึ่งก็คือ pkg) ทุกประการ แต่ไม่ตรงกับเส้นทาง (/path/to/pkg) โดยที่ \ เป็นอักขระแบบกลม จะปิดใช้งานการแทนที่โดยนัยของ pkg ด้วย *pkg*

locate --basename '\pkg'

ดังที่คุณเห็นจากเอาต์พุตคำสั่งด้านบน locate จะค้นหาโดยเริ่มจากไดเร็กทอรีราก (/) นั่นคือสาเหตุที่ทำให้ไดเร็กทอรีอื่นที่มีชื่อเดียวกันตรงกัน

ดังนั้น เพื่อจัดการกับปัญหานี้ ให้ใช้ ค้นหา โดยทำตามไวยากรณ์แบบง่ายด้านล่าง:

find starting-point options [expression]

ให้เราดูตัวอย่างบางส่วน

หากต้องการค้นหาไดเร็กทอรีเดียวกัน (pkg) ด้านบน ภายในไดเร็กทอรีการทำงานปัจจุบัน ให้รันคำสั่งต่อไปนี้ โดยที่แฟล็ก -name อ่านนิพจน์ซึ่งในกรณีนี้คือ ชื่อฐานไดเรกทอรี

find . -name "pkg"

หากคุณพบข้อผิดพลาด “สิทธิ์ถูกปฏิเสธ ” ให้ใช้คำสั่ง sudo ดังนี้:

sudo find . -name "pkg"

คุณสามารถป้องกันการค้นหาจากการค้นหาไฟล์ประเภทอื่นยกเว้นไดเร็กทอรีได้โดยใช้แฟล็ก -type เพื่อระบุประเภทของไฟล์ (ในคำสั่งด้านล่าง d หมายถึงไดเร็กทอรี) ดังนี้:

sudo find . -type d -name "pkg"

นอกจากนี้ หากคุณต้องการแสดงรายการไดเร็กทอรีในรูปแบบรายการยาว ให้ใช้สวิตช์ดำเนินการ -ls:

sudo find . -type d -name "pkg" -ls

ถัดไป ตัวเลือก -iname จะเปิดใช้งานการค้นหาที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่:

sudo find . -type d -iname "pkg" 
sudo find . -type d -iname "PKG" 

หากต้องการค้นหาข้อมูลการใช้งานขั้นสูงและน่าสนใจ โปรดอ่าน man page ของ ค้นหา และ ค้นหา

man find
man locate

ดังข้อสังเกตสุดท้าย คำสั่ง find มีความน่าเชื่อถือและมีประสิทธิภาพมากกว่าสำหรับการค้นหาไฟล์ (หรือไดเร็กทอรี) ในระบบ Linux เมื่อชั่งน้ำหนักเทียบกับคำสั่ง locate

เช่นเดียวกับเมื่อก่อน อย่าลืมส่งข้อเสนอแนะหรือคำถามของคุณผ่านทางส่วนความคิดเห็นด้านล่าง สุดท้ายนี้ ยังคงเชื่อมต่อกับ Tecmint อยู่เสมอ