wc -l コマンドの出力合計を統計します。

wc -l コマンドの出力合計を統計します。

次のワークスペースツリーがあります。

/Directory
  /Dir1/file1, file2
  /Dir2/file3, file4
  /Dir3/file5, file6
...

dir内の各ファイルの行数の合計を計算したいと思います。

このスクリプトはありますが、合計ではないファイルごとの行数のみを計算します。

#!/bin/bash

find . -maxdepth 1 -mindepth 1 -type d | while read dir; do
  printf "%-25.25s : " "$dir"
  find "$dir" -type f | while read file; do
      linecount= cat $file | wc -l 
      echo "this file contains $linecount lnes"
  done 
done

ベストアンサー1

私の解決策は次のとおりです

for d in */; do
    echo -n "$d : "
    sum=0
    for f in "$d"/*; do
        if [ -f "$f" ] ; then
            lines=$(wc -l "$f")
            sum=$((sum+lines))
        fi
    done
    echo $sum
done

たぶん初心者が理解しやすくなります。

おすすめ記事