コマンド出力で行番号を見つける方法はありますか?

コマンド出力で行番号を見つける方法はありますか?

2つのサーバー間のコマンド出力を比較しようとしています。のようなコマンドの出力から行数を見つけたいと思いますls -l。これを行う方法はありますか?これまで私は何も見つかりませんでした。

答え1

一部の人にとって、これは覚えやすくなります。

ls -l | grep . -c

grep と wc はどちらもtotal 32044or などの補助行を計算します./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

関連情報