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