2013-07-09 3 views
9

मुझे अक्सर एक गिट प्रोजेक्ट में एकाधिक तार/पैटर्न वाली रेखाओं की खोज करने की आवश्यकता होती है उदा।एकाधिक तारों के लिए "गिट grep" करने का सबसे आसान तरीका?

git grep -i -e str1 --and -e str2 --and -e str3 -- *strings*txt 

यह बहुत तेज़ हो जाता है।

क्या ऐसा करने का कोई बेहतर तरीका है?

+1

शायद TextExpander का उपयोग कर सकते हैं? –

+0

यह एक अच्छा विचार है :) – PlagueHammer

उत्तर

2

आपने उल्लेख नहीं किया कि आप किस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं, लेकिन यदि यह लिनक्स जैसा है, तो आप "रैपर" स्क्रिप्ट लिख सकते हैं। git-grep1 जैसे नाम की एक शेल स्क्रिप्ट बनाएं और उसे अपनी $ PATH में निर्देशिका में डालें, इसलिए गिट इसे ढूंढ सकता है। फिर आप git grep1 param1 param2... टाइप कर सकते हैं जैसे कि आपकी स्क्रिप्ट अंतर्निहित गिट कमांड थी।

# Example use: find C source files that contain "pattern" or "pat*rn" 
# $ git grep1 '*.c' pattern 'pat*rn' 

# Ensure we have at least 2 params: a file name and a pattern. 
[ -n "$2" ] || { echo "usage: $0 FILE_SPEC PATTERN..." >&2; exit 1; } 

file_spec="$1" # First argument is the file spec. 
shift 
pattern="-e $1" # Next argument is the first pattern. 
shift 

# Append all remaining patterns, separating them with '--and'. 
while [ -n "$1" ]; do 
    pattern="$pattern --and -e $1" 
    shift 
done 

# Find the patterns in the files. 
git grep -i "$pattern" -- "$file_spec" 

आप शायद, उदाहरण के लिए, इस के साथ प्रयोग करने शायद $file_spec और एकल उद्धरण में प्रत्येक पैटर्न बंद करके विस्तार को रोकने के लिए द्वारा की आवश्यकता होगी:

यहाँ एक त्वरित उदाहरण पाने के लिए आप शुरू कर दिया है खोल।

0

आप तार के रिश्तेदार आदेश को जानते हैं, तो आप एक

git grep str1.*str2.*str3 -- *strings*txt 
संबंधित मुद्दे