人間が読める形式でディレクトリ内の各ファイルの行数を一覧表示する方法。

人間が読める形式でディレクトリ内の各ファイルの行数を一覧表示する方法。

大きなcsvファイルを含むディレクトリとサブディレクトリのリストがあります。このファイルには約5億行があり、各行はレコードです。知りたい

  1. 各ファイルにはいくつの行がありますか?
  2. ディレクトリに何行がありますか?
  3. 総数行ですか?

最も重要なのは、「人が読める形式」が必要だということです。 12345678の代わりに12,345,678

3つの方法でこれを行う方法を学ぶのが良いでしょう。一般的なbashツール、awkなどとPerl(またはPython)。

ベストアンサー1

各ファイルにはいくつの行がありますか?

もともと使用されたのはwc単語数を計算することでしたが、行、単語、文字、バイト、および最長行の長さを計算できます。この-lオプションは、行数を計算するように指示します。

wc -l <filename>

すると、次の行数が出力されます。

$ wc -l /dir/file.txt
32724 /dir/file.txt

データを次にパイプすることもできますwc

$ cat /dir/file.txt | wc -l
32724
$ curl google.com --silent | wc -l
63

ディレクトリに何行がありますか?

努力する:

find . -name '*.pl' | xargs wc -l

別の文章:

( find ./ -name '*.pl' -print0 | xargs -0 cat ) | wc -l

ただし、wcこのコマンドは行数ではなく新しいコード行を計算します。ファイルの最後の行が新しいコード行で終わらない場合はカウントされません。

grep -c ^ 、完全な例を使用できます。

#this example prints line count for all found files
total=0
find /path -type f -name "*.php" | while read FILE; do
     #you see use grep instead wc ! for properly counting
     count=$(grep -c ^ < "$FILE")
     echo "$FILE has $count lines"
     let total=total+count #in bash, you can convert this for another shell
done
echo TOTAL LINES COUNTED:  $total

総数行ですか?

リクエストを正しく理解したかどうかはわかりません。たとえば、結果は次の形式で出力され、各ファイルの行数が表示されます。

# wc -l `find /path/to/directory/ -type f`
 103 /dir/a.php
 378 /dir/b/c.xml
 132 /dir/d/e.xml
 613 total

あるいは、ファイルなしで改行の総数を出力するには、次のコマンドをファイルごとに計算することが便利です。

# find /path/to/directory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
 613

最も重要なのは、「人が読める形式」が必要だということです。 12345678の代わりに12,345,678

バッシュには一つがあります印刷機能内蔵機能:

printf "%0.2f\n" $T

いつものように、ここで言及したのと同じ結果を得るためのさまざまな方法があります。

おすすめ記事