複数のサブフォルダに何百もの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 \;