2011年11月22日火曜日

wcで再帰的にディレクトリを辿ってファイルの行数を数える

linuxとか、おそらくwindowsにもwcというコマンドがあります。

わーどかうんと

の略です。ファイルの単語数や行数、バイト数などを表示してくれます。
このコマンドを使うと、いくつかソースファイルがあるとき、行数が多いものをすぐに発見できたり、プログラムを書いた後で、おお〜今日は1000行書いたのか〜とちょっと満足感に浸れたりします。

でもこのコマンド、-Rオプションをつけることができません。よって、ディレクトリ構造を再帰的に辿ってくれません。
ディレクトリ構造を持つプロジェクトが全部で何行あるのか知りたいときってありますよね。



というか気になるよね。



オープンソースのソースを落としたときとか気になるよね。


そんなときはこうすればいいのです


まずカレントディレクトリ内のファイルすべての行数を表示!
wc -l *



次はカレントディレクトリの中にあるディレクトリ内のファイルすべての行数を追加!
wc -l * */*



そしてカレントディレクトリの中にあるディレクトリの中にあるディレクトリ内のファイルすべての行数を追加!
wc -l * */* */*/*



さらにカレントディレクトリの中にあるディレクトリの中にあるディレクトリの中にあるディレクトリ内のファイルすべての行数を追加!
wc -l * */* */*/* */*/*/*



バカかこいつwww


でもこれを続けていくといずれ「そのようなファイルやディレクトリはありません」って言ってくるから、その時点ですべてのファイルを数えられたってことです。

さあ、合計値を見てみましょう。


おお〜すげ〜!!! 10万行もあるのか〜



10万行・・・・・・



ああそうか、この途方もなさを感じさせないようにwcには-Rオプションが付いていないんだな

3 件のコメント:

  1. % wc -l `find ./ -type f`

    返信削除
  2. >匿名さん
    findコマンド・・・実にクールです!
    ちゃんと方法があったんですねw
    ありがとうございます!

    返信削除
  3. zshならwc **/*とかでいいんでねーの、しらんけど

    返信削除