揮発性のメモ2

http://d.hatena.ne.jp/iww/

ソースの行数を全部足す

現在位置から下のソース(*.cと*.h)の行数を全部足して、全部で何行あるか出力する。

$ cd /usr/src/linux-source-2.6.26

$ find ./ \( -name \*.c -o -name \*.h \) -exec wc -l {} \; | perl -ne '$i+=$_; END{print "$i\n"}'
8352072


自分用メモ

find

\*.c:* を展開させず文字列としてfindに直接渡す用。"*.c"でも可。
-o論理和。このオプションを使うときは必ず\( \)で括る。括らないとどこで意味が途切れるかわからないので緊張する。
-exec-exec hoge {} \; とにかく毎回忘れるのでメモ。

perl

-e:引数にプログラムを書ける。プログラムはなるべく' 'の方で括るようにする。" "で括るとエスケープとかいろいろ考えるのが面倒くさい。
-nwhile(<>){ }が外側にあるフリをする。出力をつけたかったら代わりに-pの方を使う
END{ }:プログラムの最後に何かする。最初に何かするなら BEGIN{ }

wc

-l:そもそも、wc -lにまるっと食わせれば行数は出せた。プログラムなんて書く必要も無い。しかも何十倍も速い。

$ find -name "*.c" -o -name "*.h" | xargs cat | wc -l


参考にさせていただいたページ
Perl第4回:PerlTips(コマンドラインオプション) ←今はもう無い