コマンド出力から行数を確認する方法はありますか?

コマンド出力から行数を確認する方法はありますか?

2 つのサーバー間でコマンド出力を比較しようとしています。 などのコマンドの出力から行数を調べたいのですが、ls -lその方法はありますか? 今のところ何も見つかっていません。

答え1

誰かにとっては、これが覚えやすいかもしれません:

ls -l | grep . -c

total 32044grep と wc はどちらも、またはまたはなどの補助行をカウントすることに注意してください./dirname:。特に再帰出力でこれを回避するには、ls -lR次を試してください。

find . -type f | grep . -c

ここで、 first.はディレクトリ パスであり、ファイルのみをリストする-type fことを意味しますfind。すべてのタイプ (ディレクトリ、ソケットなどを含む) が必要な場合は、 を省略します -type f

注意:wc -l空行 ('\n' のみ) はカウントされますが、grep . -c- はカウントされません。

答え2

以下を使用する必要がありますwc:

$ wc -l .emacs.d/init.el 
73 .emacs.d/init.el

からman wc

NAME
       wc - print newline, word, and byte counts for each file

SYNOPSIS
       wc [OPTION]... [FILE]...
       wc [OPTION]... --files0-from=F
       ....
       -l, --lines
              print the newline counts

wcは の一部なのでGNU coreutils、ほとんどのシステムで使用できますUnix-like

答え3

コマンドをwcコマンドにパイプすることができます:

ls -l | wc -l

答え4

どちらかのサーバーで処理されたファイルの数を比較したい場合は、次のようにすると確実に実行できます。

ls -aR1qp ./ | grep -cv '/\|^$'

.dotfilesこれは、必要に応じてシェル グロブを使用して、現在のディレクトリの下を含むすべてのファイル (ディレクトリではありません) を 1 行に 1 つずつ再帰的にリストします。印刷できない文字を置き換えます。grep親ディレクトリのリストや空白行は除外されるため、ファイルごとに 1 行のみになり、その合計数が返されます。子ディレクトリも含める場合は、次のようにします。..*/grep

ls -aR1qp ./ | grep -cv '^\.\{1,2\}/\|^$'

または...

ls -AR1q ./ | grep -cv '/\|^$'

最新バージョンでは、-AオプションはPOSIX であることに注意してください。ls

関連情報