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

วิธีค้นหาสตริงหรือคำเฉพาะในไฟล์และไดเร็กทอรี


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

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

อ่านเพิ่มเติม: 11 คำสั่ง Linux ขั้นสูง 'Grep' ในคลาสอักขระและนิพจน์วงเล็บ

คำสั่งด้านล่างจะแสดงรายการไฟล์ทั้งหมดที่มีบรรทัดที่มีข้อความ “check_root ” โดยการค้นหาไดเร็กทอรี ~/bin ซ้ำๆ และเชิงรุก

grep -Rw ~/bin/ -e 'check_root'

โดยที่ตัวเลือก -R บอกให้ grep อ่านไฟล์ทั้งหมดในแต่ละไดเร็กทอรี เรียกซ้ำตามลิงก์สัญลักษณ์เฉพาะในกรณีที่ไฟล์เหล่านั้นอยู่บนบรรทัดคำสั่งและตัวเลือก -w< สั่งให้เลือกเฉพาะบรรทัดที่ตรงกันซึ่งก่อให้เกิดทั้งคำ และ -e ใช้เพื่อระบุสตริง (รูปแบบ) ที่จะค้นหา

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

 
sudo grep -Rw / -e 'check_root'	

หากต้องการละเว้นความแตกต่างของตัวพิมพ์ให้ใช้ตัวเลือก -i ดังที่แสดง:

grep -Riw ~/bin/ -e 'check_root'

หากคุณต้องการทราบบรรทัดที่แน่นอนของสตริงข้อความ ให้ใส่ตัวเลือก -n

grep -Rinw ~/bin/ -e 'check_root'

สมมติว่ามีไฟล์หลายประเภทในไดเร็กทอรีที่คุณต้องการค้นหา คุณยังสามารถระบุประเภทของไฟล์ที่จะค้นหาได้ เช่น โดยใช้นามสกุลไฟล์โดยใช้ตัวเลือก --include

ตัวอย่างนี้สั่งให้ grep ดูเฉพาะไฟล์ .sh ทั้งหมดเท่านั้น

grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

นอกจากนี้ยังสามารถค้นหาได้มากกว่าหนึ่งรูปแบบโดยใช้คำสั่งต่อไปนี้

grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

แค่นั้นแหละ! หากคุณทราบเคล็ดลับบรรทัดคำสั่งอื่นๆ ในการค้นหาสตริงหรือคำในไฟล์ โปรดแชร์กับเราหรือถามคำถามเกี่ยวกับหัวข้อนี้ โดยใช้แบบฟอร์มความคิดเห็นด้านล่าง