ค้นหาสตริงซ้ำในขณะที่อยู่ในไดเรกทอรีปัจจุบัน


15

ฉันต้องการค้นหาไฟล์ทั้งหมดซ้ำจากไดเรกทอรีที่ฉันอยู่ในสตริงเฉพาะ

ฉันเหนื่อย

grep -r -i my_string

และฉันลองในโฟลเดอร์ทดสอบที่มีไฟล์เล็ก ๆ สองไฟล์ แต่ไม่พบสตริง

นอกจากนี้ยังมีวิธีพิเศษในการกำหนด "บรรจุ" แทนที่จะจับคู่คำทั้งหมดหรือไม่


3
ลองgrep -r -o -i "your_string" *(ด้วย "คำพูด).
pl1nk

ฉันได้รับอนุญาตไม่กี่ปฏิเสธปฏิเสธข้อความมันเพียงแค่เพิกเฉยกับไฟล์เหล่านั้น แต่ตรวจสอบส่วนที่เหลือต่อไปหรือไม่
David

ใช่ไฟล์เหล่านี้กำลังถูกเพิกเฉย
pl1nk

คำตอบ:


27

คุณกำลังค้นหาชื่อไฟล์หรือคำในไฟล์หรือไม่? grep ค้นหาในไฟล์ซึ่งน่าจะเป็นสิ่งที่คุณต้องการ

grep ใช้นิพจน์ทั่วไป - อันที่จริงนั่นคือส่วนที่ "re" หมายถึง ดังนั้นจึงไม่ใช้ wildcard bash ปกติ นั่นคือabc*จะไม่พบคำที่ขึ้นต้นด้วย abc มันจะค้นหาคำที่ขึ้นต้นด้วย ab แล้วตามด้วยศูนย์หรือมากกว่านั้น แต่ใช่ถ้าคุณให้แบบอย่างมันจะหาได้ทุกที่โดยไม่มีความรู้ทั้งคำ หากคุณต้องการค้นหาคำทั้งหมดคุณจะต้องสร้างการแสดงออกปกติเพื่อบอกว่า

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

ตามที่ @ link ใช้

grep -r -o -i "your_string" *

(หรือ*.*, หรือ filespec อื่น ๆ ) ข้อผิดพลาดสามารถถูกละเว้น หากคุณได้รับข้อผิดพลาดจำนวนมากคุณสามารถผนวก2>/dev/nullท้ายซึ่งจะเปลี่ยนเส้นทาง stderr ไปยังอุปกรณ์ null


6
สำหรับผู้ที่อยากรู้อยากเห็น: -r หมายถึงการเรียกซ้ำ (เช่นดูในโฟลเดอร์ปัจจุบันและโฟลเดอร์ทั้งหมดในโฟลเดอร์ปัจจุบันและโฟลเดอร์ทั้งหมดในโฟลเดอร์เหล่านั้น ..... จนถึงอินฟินิตี้), -o หมายความว่ามันจะไม่แสดงทั้งบรรทัด และ -i ไม่สนใจขนาดตัวพิมพ์
BKSpurgeon

@johnsnails backtick ไม่จำเป็น มีแนวโน้มที่จะเกิดข้อผิดพลาดในการจัดรูปแบบใน Exchange Exchange เมื่อโพสต์เป็นบล็อคโค้ดอินไลน์
tom_mai78101

ใช่ว่าเหมาะสม
johnsnails
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.