ディレクトリ内のすべての* .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}'
(以前のファイルとは異なり、ファイルリストをソートせずに隠しファイルを含み、通常のファイルへのシンボリックリンクを含む非正規ファイルを除外します。)
もちろん、これらのいずれかの出力をファイルにリダイレクトしたり、さらに処理するために別のプログラムにパイプすることもできます。