web-dev-qa-db-ja.com

見つかったファイルの合計行数を数える方法は?

find . -name patternを実行していくつかのファイルを検索していますが、これらのファイルの合計行数をエレガントに取得したいと思います。

どうすればそれを達成できますか?

10
GJ.

ご使用のバージョンのwcおよびfindが必要なオプションをサポートしている場合:

find . -name pattern -print0 | wc -l --files0-from=-

これにより、ファイルごとの数と合計が表示されます。合計のみが必要な場合:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

それをサポートするバージョンのfindの別のオプション:

find . -name pattern -exec cat {} + | wc -l 
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

各ファイルを取得してcatsし、すべてをwcにパイプしてラインカウントモードに設定します。

または、[未テスト]奇妙なファイル名が安全です:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
2
Majenko

残念ながら:の出力

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

余分な行を挿入します。信頼できる行数を取得するには、次のことを行う必要があります。

find . -name "yourpattern" -print0 | xargs -0 wc -l

このようにして、スペースを正しく処理し、各ファイルの行数と合計行数をより速くスタイリッシュに取得します!!!

1
g24l

いいえを見つける別の簡単な方法。ファイル内の行:

wc -l filename

例:

wc -l myfile.txt 
1
vkGunasekaran

テストされていませんが、次のようなものはどうですか?

cat `find . -name "searchterm" -print` | wc -l
0