2つのサーバー間のコマンド出力を比較しようとしています。のようなコマンドの出力から行数を見つけたいと思いますls -l
。これを行う方法はありますか?これまで私は何も見つかりませんでした。
答え1
一部の人にとって、これは覚えやすくなります。
ls -l | grep . -c
grep と wc はどちらもtotal 32044
or などの補助行を計算します./dirname:
。特に再帰的な出力の場合は、これを避けるためにls -lR
次のことを試してください。
find . -type f | grep . -c
最初のものは.
ディレクトリパスです。-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