作業時間をぐっと減らせたコマンド

1時間ほどやってた作業が、さっさと気がついていればコマンド一発でできることに気がついた時の悲しみ。

自戒の念を込めてコマンドのメモ。

  • 特定のディレクトリ配下に新規に追加したファイルをsvn addする
  • 特定のディレクトリ配下の特定の拡張子のファイルの中から一部の文字を置換する

特定のディレクトリ配下に新規に追加したファイルをsvn addする

svn st hoge/ | awk '{print $2}' | xargs svn add

xargsは引数に受け取ったコマンドと標準入力で受け取った文字列を組み合わせて行実行してくれるコマンド。findなんかと組み合わせることが多い。

大量の画像ファイルをsvn addするとき、他に画像がすでにリポジトリ配下にあるとディレクトリ指定のsvn addではワーニングが大量に発生してとてもうざいのでこちらを使うと便利。

特定のディレクトリ配下の特定の拡張子のファイルの中から一部の文字を置換する

find . -name "*.php" | xargs sed -i -e "s/hoge/fuga/g"

カレントディレクトリ配下の.php拡張子の中にあるhogeという文字列をfugaに編集して保存する。 sedは文字列置換用のコマンド。

"s/hoge/fuga/g"は、hogeという文字すべてをfugaに置き換えるという指定。最初に検索してヒットしたhogeのみを変換したい場合は"s/hoge/fuga/"とgを付けなければ良い。

-iは上書きオプション。
-eはその右に来るものをコマンドとして受け取る、という意味。

なんでこういうのさっと思いつけないかなぁ。精進がたらない。