はむはむエンジニアぶろぐ

365日エンジニアリング

カレントディレクトリ以下にあるファイルを対象にファイル内の文字列を置換するコマンド作ったった

f:id:secret_hamuhamu:20151010192133j:plain
カレントディレクトリ以下にあるファイルを対象に、ファイル内の文字列置換したいなんてことよくありますよね?
毎回ググって、コマンドをパイプしてごにょごにょするのも面倒くさいので、シェルスクリプトでコマンドを作りました。

Usage

使い方は、こんな感じ。
第一引数に、置換前対象の文字列
第二引数に、置換後の文字列

$ replace hoge piyo
Are you sure? Argument [target replaced]. [y/n]


ソースコード

#!/bin/bash
# カレントディレクトリ以下のファイルを対象に、引数 targetをreplacedに置換する

echo 'Are you sure? Argument [target replaced]. [y/n]'
read ANSWER

# y以外ならreturn
if [ $ANSWER != 'y' ]; then
    exit 0
fi

# 引数が足らなければ、エラーを返す
if [ $# -ne 2 ]; then
    echo 'Argument is need [target replaced].'
    exit 1
fi

find . -type f -print | xargs perl -pi -e "s/$1/$2/g"

こんな感じです。
良かったら使ってください。

おすすめの本

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

[改訂新版] シェルスクリプト基本リファレンス  ??#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

シェルプログラミング実用テクニック

シェルプログラミング実用テクニック

実践Vim 思考のスピードで編集しよう! (アスキー書籍)

実践Vim 思考のスピードで編集しよう! (アスキー書籍)