วิธีใช้คำสั่ง 'ค้นหา' เพื่อค้นหาไดเร็กทอรีอย่างมีประสิทธิภาพยิ่งขึ้น
บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับวิธีต่างๆ ในการค้นหาไดเร็กทอรีใน 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 อยู่เสมอ