ex(vim -e)コマンドを使おう
sedとxargsで特定文字列を一括置換する方法。
find ./ -name *.html | xargs sed -i 's/検索文字列/置換文字列/g'sedとxargsで特定文字列を一括置換 - プログラマになりたい
んー、これだと上手く動かないよ。
find ./ -name *.html | xargs sed -i 's/検索文字列/置換文字列/g' {}
としないと
あと、sedだと標準出力に出るだけで面白くない。
どうせなら一括置換して保存したい。コメント欄参照
ed コマンド
ed コマンドというのがある。行指向のテキストエディタである。viのexコマンドの多くはedコマンドが由来していると思われる。viの操作が出来る人はedコマンドにもすぐ慣れることが出来るのではないかと思う。
んで、このedコマンドがそこら辺のエディタと違うのはバッチ処理的なことができる事。ファイルの中身を直接書き換えて保存なんて事ができる。
ed path/to/file <<EOF %s/foo/bar/g wq EOF
という感じで標準入力にコマンドを渡してあげるとバッチ処理ができる。
しかし、edコマンドは標準入力からのコマンドを必要とするため、xargs コマンドと相性が悪い。具体的には
find .... | xargs -i ed {} <<EOF .... .... EOF
とした場合、ヒアドキュメントの中身はedコマンドではなくxargsに渡ってしまう。シェルからみたらedは単なるxargsの引数なのだから、これは当然の動きである。