ディレクトリ内を再帰的に全置換する際、grepを使用するかfindを使用するかいつも迷うのですが
・下記は同じ意味ですか?

grep -rl 置換前 . | xargs sed -i 's/置換前/置換後/g'

find . -type f - | xargs sed -i 's/置換前/置換後/g' 

find . -type f -exec sed -i 's/置換前/置換後/g' {} + 

find . -type f -exec sed -i 's/置換前/置換後/g' {} \

・基本的には、findの方がファイルタイプを指定できるので、出来ることが多い?
・ディレクトリ名やファイル名の置換はgrepでは出来ない?