wc -lは、フォルダーとサブフォルダー内のすべてのtxtファイルの行数を数えます。

wc -lは、フォルダーとサブフォルダー内のすべてのtxtファイルの行数を数えます。

複数のサブフォルダに何百ものtxtファイルがあり、各txtファイルの行数を計算したいと思います。以下を使用して、現在のディレクトリ内のすべてのtxtファイルに対してこれを実行できます。

for f in *.txt; do wc -l "$f"; done

出力:

[number] [txt filename]
[number] [txt filename]
[number] [txt filename]

これはいいですね。ただし、各サブフォルダを数百回移動したくありません。ディレクトリ構造は次のとおりです。

-main
    -folder1
        textfile1.txt
        textfile2.txt
        textfile3.txt
    -folder2
        textfile4.txt
        textfile5.txt
        textfile6.txt
    -folder3
        textfile7.txt
        textfile8.txt
        textfile9.txt
...and so forth

テキストファイルの.txt拡張子の前にスペースといくつかの点が含まれていることは注目に値します。ただし、上記のようにwc -lを使用するとエラーは発生しません。 MacOSを実行しているMacで端末を使用することは、ほとんどBSDと同様に機能します。

答え1

find /the/path/to/search/ -name "*.txt" -exec wc -l {} \;

答え2

ディレクトリ構造が変更されない場合は、ワイルドカードを使用してリストを安全に拡張できます(コマンドラインの長さを超えるほど結果ファイルが多すぎないと仮定します)。

wc -l main/*/*.txt

または

wc -l */*/*.txt

...開始位置と含める項目によって異なります。

答え3

find /yourpath -type f -name "*.txt" -exec wc -l {} /dev/null \;

関連情報