Linuxmaniaトップ活用ガイドテクニカルショートチップス -Linuxの強力なコマンド

Linuxデスクトップを使おう


テクニカルショートチップス -Linuxの強力なコマンド



 Linuxのパワフルなコマンド群の恩恵をご紹介します。

『このサイトにある全ての html ファイルの support.html へリンクを foruser.html へのリンクに置換したい。』
こんな仕事が舞い込んできたとき、あなたならどうしますか?

Linuxのコマンドを知っていれば、たった1分で完了です。
まずは、html ファイルを全部探すので、findコマンドを使ってみます。

$ find . -name '*.html'

結果は、

./a.html
./b.html
./c_dir/d.html

のように続いていきます。
さて、ファイルはいくつあるでしょうか。
先ほどのfindの結果を、文字数などを数えるwcコマンドに渡してみます。

$ find . -name '*.html' | wc -l

ファイル数は一瞬で分かります。
次に、このhtmlファイル全てのうち、support を含む行を探してみましょう。
こんどは、findの結果を、テキストファイルの中を検索するgrepコマンドにxargsコマンドを介して渡してみます。

$ find . -name '*.html' | xargs -I {} grep 'support' {}

結果は、全部のhtmlファイルを開いて、’support’を検索して、ヒットした全ての行をメモにコピペしたものと同じになります。
コマンドの実行は一瞬ですが、手作業でできる仕事ではありません。

では、このhtmlファイル全ての中で、’support’を’foruser’に置換した結果を出力してみましょう。
こんどは、findの結果を、perlで置換してみます。

$ find . -name '*.html' | xargs -I {} perl -p -e 's/support/foruser/g' {}

結果は、全部のhtmlファイルを開いて、’support’を’foruser’で置換した全てをメモにコピペしたものと同じになります。

これだけならperlではなくsedコマンドを利用してもいいですね。
結果を眺めて問題なさそうなら、perl の -p オプションを -pi にすれば、全部のファイルを上書きします。
もちろん、ただ眺めるだけではなくて、編集後の結果をgrepで絞り込んで、欲しい情報だけを確認しましょう。

ちなみに、Linuxmaniaサイトの全htmlファイルの文中の’support’を’foruser’に置換する所要時間は、たった2秒ほどです。

Linuxのパワフルなコマンド群を知ってしまうと、もう他の方法には戻れませんね。

[作成日 2011/8/1]