ฉันพยายามหาวิธีสแกนระบบ Linux ทั้งหมดของฉันสำหรับไฟล์ทั้งหมดที่มีสตริงข้อความที่เฉพาะเจาะจง เพียงชี้แจงฉันกำลังมองหาข้อความภายในไฟล์ไม่ใช่ในชื่อไฟล์
เมื่อฉันมองหาวิธีการทำสิ่งนี้ฉันเจอวิธีแก้ปัญหานี้สองครั้ง:
find / -type f -exec grep -H 'text-to-find-here' {} \;
อย่างไรก็ตามมันใช้งานไม่ได้ ดูเหมือนว่าจะแสดงไฟล์ทุกไฟล์ในระบบ
นี่เป็นวิธีที่เหมาะสมในการทำสิ่งนี้หรือไม่? ถ้าไม่ฉันควรทำอย่างไร ความสามารถในการค้นหาสตริงข้อความในไฟล์นี้จะเป็นประโยชน์อย่างยิ่งสำหรับโครงการการเขียนโปรแกรมบางอย่างที่ฉันทำ
-Hด้วย-l(และอาจจะgrepด้วยfgrep) หากต้องการยกเว้นไฟล์ที่มีรูปแบบชื่อที่แน่นอนคุณจะต้องใช้findวิธีการขั้นสูงเพิ่มเติม มัน worthwile เรียนรู้ที่จะใช้findแต่ man findเพียงแค่
find … -exec <cmd> +find … -exec <cmd> \;จะง่ายต่อการพิมพ์และเร็วกว่า มันจะทำงานเฉพาะในกรณีที่<cmd>ยอมรับข้อโต้แย้งชื่อไฟล์จำนวนเท่าใดก็ได้ การประหยัดเวลาในการประมวลผลนั้นใหญ่มากหาก<cmd>เริ่มต้นช้าเช่นสคริปต์ Python หรือ Ruby
grep "pattern" path/*.txt
.ว่าเป็นอักขระตัวแทนเดียวในกลุ่ม คำแนะนำของฉันคือใช้ fgrep หรือ egrep เสมอ