git grep ตามนามสกุลไฟล์


93

ฉันรู้ว่าถ้าฉันต้องการ grep สำหรับรูปแบบเฉพาะในไฟล์ที่มีนามสกุลบางอย่างฉันสามารถทำได้:

// searches recursively and matches case insensitively in only javascript files
// for "res" from the current directory
grep -iIr --include=*.js res ./

ฉันพยายามค้นหาวิธีทำสิ่งนี้ผ่าน git grep เช่นกัน (เพื่อใช้ประโยชน์จากความเร็วของ git grep จากดัชนีที่เก็บไว้กับทรี) แต่ก็ไม่มีประโยชน์ ฉันเห็นที่นี่ว่าไม่สามารถยกเว้นไฟล์บางประเภทได้

คำตอบ:


147

ใช่ตัวอย่างเช่น:

git grep res -- '*.js'

4
การปรับเปลี่ยนเล็กน้อย - ถ้าคุณไม่ได้อยู่ในรูทของที่เก็บgit grep res -- '/*.js'อาจจะดีกว่า ...
twalberg

1
@twalberg: แต่ความคิดเห็นบอกว่าเขาต้องการดูจากไดเร็กทอรีปัจจุบัน [ลง] ใช่ไหม?
CB Bailey

3
ข้อมูลเพิ่มเติม: หากคุณต้องการระบุชุดของนามสกุลไฟล์คุณสามารถใช้ได้git grep res -- *.js *.csในคำถาม
stk_sfr

3
ทำอะไร--สำเร็จ?
aehlke

1
สิ่งสำคัญที่ต้องไม่ลืมคือเครื่องหมายคำพูดเดียวรอบ ๆ '* .js' หากพวกเขาไม่อยู่ที่นั่นก็จะไม่ทำงาน (เปลือกจะสกัดกั้นก่อนที่จะถึงคอมไพล์)
hasen

3

ลองทำสิ่งนี้:

find . -type f -iname '*.js' -exec grep -i 'pattern' {} +

1
{}คือไฟล์ปัจจุบันและ+วิธีการจัดการกับอาร์กิวเมนต์สูงสุดในเวลาเดียวกันซึ่งแตกต่างจาก{} \;(ทีละไฟล์เท่านั้น) ตรวจสอบman find
Gilles Quenot

คำถามถามหา grep "git"
โจ๊ก

0

หากคุณต้องการค้นหาในทุกสาขาคุณสามารถใช้สิ่งต่อไปนี้:

git log -Sres --all --name-only -- '*.js'

(ฉันเห็นคุณระบุ git grep สำหรับฉันแล้วแนวทางที่นี่ดูเหมือนง่ายและจำง่ายกว่า - เหมือนกับการดำเนินการอื่น ๆ ที่ฉันต้องการโดยทั่วไป)

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