ファイルの長さを再帰的に印刷

ファイルの長さを再帰的に印刷

ディレクトリ内のすべての* .txtファイルの長さをどのように印刷しますか?

例: ディレクトリコンテンツ:

FileA.txt 
FileB.txt
FileC.txt 
FileA.csv

*.txtの長さ:

less FileA.txt | wc -l 
43
less FileB.txt | wc -l 
13
less FileC.txt | wc -l 
3

希望の出力(出力ファイルに書き込まれます):

43
13
3

(作業中ですが成功しませんでした:ls *.txt| while read FN; do wc -l < $FN >> output; done- 空のファイルを出力しています)

ベストアンサー1

wc -l -- *.txt

または、ファイル名を出力に含めたくない場合(ファイル名に改行文字が含まれていないと仮定):

wc -l -- *.txt | awk '{print $1}'

単一のシェルコマンドラインに入ることができないほど* .txtファイルが多すぎ、findがそれをサポートしていると仮定する場合-maxdepth

find . -maxdepth 1 -type f -name '*.txt' -exec wc -l {} + | 
    awk '$2 != "total" {print $1}'

(以前のファイルとは異なり、ファイルリストをソートせずに隠しファイルを含み、通常のファイルへのシンボリックリンクを含む非正規ファイルを除外します。)

もちろん、これらのいずれかの出力をファイルにリダイレクトしたり、さらに処理するために別のプログラムにパイプすることもできます。

おすすめ記事