find . -name pattern
を実行していくつかのファイルを検索していますが、これらのファイルの合計行数をエレガントに取得したいと思います。
どうすればそれを達成できますか?
ご使用のバージョンの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
各ファイルを取得してcat
sし、すべてをwc
にパイプしてラインカウントモードに設定します。
または、[未テスト]奇妙なファイル名が安全です:
$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
残念ながら:の出力
find . -iname "yourpattern" -exec cat '{}' \; |wc -l
余分な行を挿入します。信頼できる行数を取得するには、次のことを行う必要があります。
find . -name "yourpattern" -print0 | xargs -0 wc -l
このようにして、スペースを正しく処理し、各ファイルの行数と合計行数をより速くスタイリッシュに取得します!!!
いいえを見つける別の簡単な方法。ファイル内の行:
wc -l filename
例:
wc -l myfile.txt
テストされていませんが、次のようなものはどうですか?
cat `find . -name "searchterm" -print` | wc -l