gitプロジェクトで複数の文字列やパターンを含む行を検索する必要がある場合があります。複数の文字列に対して "git grep"を行う最も簡単な方法は?
git grep -i -e str1 --and -e str2 --and -e str3 -- *strings*txt
これは非常に面倒です。
これを行うより良い方法はありますか?
gitプロジェクトで複数の文字列やパターンを含む行を検索する必要がある場合があります。複数の文字列に対して "git grep"を行う最も簡単な方法は?
git grep -i -e str1 --and -e str2 --and -e str3 -- *strings*txt
これは非常に面倒です。
これを行うより良い方法はありますか?
使用しているオペレーティングシステムについては言及していませんが、Linuxの場合は「ラッパー」スクリプトを作成できます。 git-grep1
のような名前のシェルスクリプトを作成し、$ PATHにあるディレクトリに入れてください。そうすれば、gitはそれを見つけることができます。次に、あなたのスクリプトが組み込みのgitコマンドであるかのように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
と各パターンを囲むことで、これを試して、おそらく必要がありますシェル。
あなたは、文字列の相対的な順序を知っているのならば、たぶんのTextExpanderを使う
git grep str1.*str2.*str3 -- *strings*txt
を行うことができますか? –
それはいい考えです:) – PlagueHammer