Movatterモバイル変換


[0]ホーム

URL:


hydroculのメモ >ブログ >2016年 >ディレクトリの中を再帰的に全置換するには

ディレクトリの中を再帰的に全置換するには2016/09/12

GNU sedがあれば、置換対象のファイルをgrep でリストアップして、sed-i オプションを使う。

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

ファイルの拡張子などで条件を絞って全置換するにはfind を使う。

$ find . -name "*.txt" | xargs sed -i 's/置換前/置換後/g'

または

$ find . -name "*.txt" -exec sed -i 's/置換前/置換後/g' {} \;

findを使う方法は、findで見つけてきた全ファイルのタイムスタンプを、たとえそのファイルに置換文字列が含まれていなくも、変えてしまう。

置換時に元ファイルをリネームしてバックアップしておきたい場合はsed-i オプションにsuffixを付ける。

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

カレントディレクトリの中にあるすべてのファイルのすべての行の先頭に// を追加する例

$ find . -type f -exec sed -i 's/^/\/\//g' {} \;
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。

[8]ページ先頭

©2009-2025 Movatter.jp