grep/ack/ag でのエスケープがわからないなら直接文字列リテラル渡せばいいじゃない
適当にエスケープしてメタ文字消して置換しようとしたけど、正直よくわからなかった。たとえばこういうもの
Obj.objects.create(**kwargs)
こういうとき愚直に「. をエスケープして……あれ()ってクオートで囲むの……あれ……」とかやってた
別に単純な文字列のマッチでよかった
そういうときには grep なら -F, ag なら -Q というオブションがある
# grep grep -rF "Obj.objects.create(**kwargs)" ./ # ag ag -Q "Obj.objects.create(**kwargs)"
あとは煮るなり焼くなり
# -l でファイル出力して xrags で受け取る ag -lQ "Obj.objects.create(**kwargs)" | xargs sed -i "s/Obj\.objects\.create(**kwargs)/oyaoya/g"