![私が書いたコードの行数を調べるコマンドですか? [閉鎖]](https://linux33.com/image/118250/%E7%A7%81%E3%81%8C%E6%9B%B8%E3%81%84%E3%81%9F%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E8%A1%8C%E6%95%B0%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
find . -type f -name '*.c' -exec cat {} \; | sed '/^\s*#/d;/^\s*$/d;/^\s*\/\//d' | wc -l
誰でもその意味を説明できますか?
答え1
説明する:
find . -type f -name '*.c'
.c
- 名前と拡張子に記号が含まれている現在のディレクトリ内のすべてのファイルを繰り返し検索します。よりman find
-exec cat {} \;
- 前の手順で見つけたファイルの内容を取得します。 -exec構文を参照してください。-exec command {} +
sed '/^\s*#/d;/^\s*$/d;/^\s*///d'
- さまざまな種類の「コメント」(または同様のコンテンツ)を削除します。このセクションは3つの部分で構成されています;
。
/^\s*#/d
- 行の始まり(^
)、0、1以上のスペース(\s*
)、および#
記号。//d
- 一致する文字列を削除します。/^\s*$/d
- 空白行。前のセクションと同じですが、$
行末を表す記号があります/^\s*\/\//d
- 前に 0,1 以上の空白がある 2 つのスラッシュ (\/\/
, - 引用スラッシュのためのバックスラッシュ) がある行と一致します。\
wc -l
- コード行数の計算
答え2
find . -type f -name '*.c'
.c で終わるファイルを探す
-exec cat {} \;
コマンドを実行してファイルを印刷します。 (実際には意味がありません。ファイル名をパイプではなく引数として直接cat
渡すことができます。)sed
| sed '/^\s*#/d;/^\s*$/d;/^\s*\/\//d'
ファイルからプリプロセッサディレクティブ、空行、コメントを削除します。| wc -l
コマンドからその部分を削除すると、コメントなしでファイルを表示できます。
| wc -l
コメントをフィルタリングした後に表示される行の総数を計算します。
答え3
どういう意味か説明してみてください。わかりました私の考えでは、これは誰かがコマンド間で標準出力を接続するのが好きだということを意味すると思います。
すべてが単純なものに置き換えることができると思います。
find . -type f -name '*.c' -exec grep -cv -e '^\s*#' -e '^\s*$' -e '^\s*//' {} \;