1. 背景
grepで何かを検索したいときにいつもググってしまいがちです。
ここでは、再帰的にファイルをgrepしたいとき、どのようにやるかを整理します。
2. grep
以下のようなコマンドです。
grep -r {キーワード} --include='*.{拡張子}' {起点となるディレクトリのパス}
具体例は以下です。outputディレクトリ以下のmarkdownファイルを検索します。検索キーワードは正規表現を使用して、行頭がimageで始まるものです。
grep -r ^image: --include='*.md' content/
3. 文字列置換
以下のようにsedを使います。
grep -lr "/images/doc/params.webp" --include='*.md' content/ | xargs sed -e s@/images/doc/params.webp@/images/avatar.png@g
簡単な解説
grep -lr
・・・ファイル名だけ出力するsed -e
・・・文字列置換@
・・・置換対象と置換後の文字区切り。置換対象にパスの区切りである/
を入れているため@
で区切っている。区切りはなんでも良い。