日暮途遠(Linux)

Just another WordPress.com site

Posts Tagged ‘ack

ackコマンドを使ってカレントディレクトリ以下のスクリプトのシェバングを一括置換

leave a comment »

ack使い方メモ – アルパカDiary http://d.hatena.ne.jp/toritori0318/20100404/1270395880 を参考にしました。

ackという便利な検索系のコマンドを発見しました。findとgrepのいいとこ取りをしたようなコマンドらしいです。Perlのパッケージと言うことですが、コマンド自体はapt-getでもインストールできました。しかし、apt-getでインストールしたものは挙動が異なるらしく、grep同様対象ファイルの指定が必須みたいでした。また機能も不十分みたいな感じだったので、cpanでPerlのパッケージのものをインストールしました。

ざっとみたところHTMLやPerl、Rubyといったファイルタイプの指定が出来るみたいです。PerlもRubyもスクリプト言語なので、スクリプトのはシェバングがつきものです。冒頭に記載するスクリプトの内容を実行する実行プログラム本体のパス指定ですが、環境によって異なることも少なくないと思います。

パイプを使ってコマンドの引数のファイル名をxargsに渡しているだけなので、findのexecオプションを使うなど他にも方法はあると思いますが、ファイルタイプの指定もされているので、多少安心感も増すのではと思いました。間違いをやると元に戻すのも大変なので、万全を期す場合は、コピーしたディレクトリで実行した上で移行させた方がいいようにも思います。

% ack -f --ruby | xargs perl -p -i -e 's%#!/usr/bin/ruby%#!/usr/local/bin/ruby%

/usr/bin/rubyの部分を/usr/local/bin/rubyに置き換えた例です。人名を仮名に変換するのも同じかと思います。

なお、ackコマンドは処理速度も早いらしいです。

Written by 廣野秀樹

2012年5月29日 at 12:00 午前

カテゴリー: Linux

Tagged with ,