Linuxで再帰的に行数をカウントする方法


  1. findコマンドとwcコマンドを組み合わせる方法:

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

    このコマンドは、指定したディレクトリ以下のすべてのファイルの行数を再帰的にカウントします。

  2. findコマンドとxargsコマンドを組み合わせる方法:

    find /path/to/directory -type f -print0 | xargs -0 wc -l | awk '{total += $1} END {print total}'

    この方法も、指定したディレクトリ以下のすべてのファイルの行数を再帰的にカウントします。xargsコマンドは、複数のファイルを効率的に処理するために使用されます。

  3. シェルスクリプトを使用する方法: 以下は、シェルスクリプトを使用して再帰的に行数をカウントする例です。

#!/bin/bash
count_lines() {
    local file="$1"
    local count=$(wc -l < "$file")
    echo "$count"
}
recursive_count_lines() {
    local dir="$1"
    local total=0
    for file in "$dir"/*; do
        if [ -d "$file" ]; then
            total=$((total + $(recursive_count_lines "$file")))
        elif [ -f "$file" ]; then
            total=$((total + $(count_lines "$file")))
        fi
    done
    echo "$total"
}
directory="/path/to/directory"
total_lines=$(recursive_count_lines "$directory")
echo "Total lines: $total_lines"

このシェルスクリプトは、指定したディレクトリ以下のすべてのファイルの行数を再帰的にカウントし、合計行数を表示します。

これらの方法を使用すると、Linuxで再帰的に行数をカウントすることができます。