[解決済み] サブディレクトリを含むコード行数をカウントする方法 [重複]。
質問
私がプロジェクト内のコードの行数を数えたい場合を考えてみましょう。もしすべてのファイルが同じディレクトリにあれば、私は実行することができます。
cat * | wc -l
しかし、サブディレクトリがある場合、これはうまくいきません。これが動作するためには、catは再帰的なモードを持っている必要があります。これは xargs の仕事かもしれませんが、よりエレガントなソリューションがあるのでしょうか?
どのように解決するのですか?
まず
cat
を使って行数を数える必要はありません。これは
のアンチパターンで、Useless Use of Cat と呼ばれています。
(UUoC)と呼ばれるアンチパターンです。カレントディレクトリにあるファイルの行数を数えるには
wc
:
wc -l *
次に
find
コマンドはサブディレクトリを再帰的に検索します。
find . -name "*.c" -exec wc -l {} \;
-
.
は、検索を開始するトップディレクトリの名前です。 -
-name "*.c"
は対象のファイルのパターンです。 -
-exec
実行するコマンドを指定する -
{}
はコマンドに渡されるfindコマンドの結果です(ここではwc-l
) -
\;
はコマンドの終わりを示す
このコマンドは、見つかったすべてのファイルとその行数のリストを作成します。
すべての
の合計が欲しい場合は、find を使ってファイルをリストアップすることができます (
-print
オプションで) ファイルをリストアップし、次に xargs を使ってこのリストを wc-l の引数として渡します。
find . -name "*.c" -print | xargs wc -l
Robert Gamble のコメントに対応するための編集 (感謝): ファイル名にスペースや改行 (!) が入っている場合は
-print0
オプションの代わりに
-print
と
xargs -null
で、ファイル名のリストがヌル文字で終端する文字列と交換されるようにします。
find . -name "*.c" -print0 | xargs -0 wc -l
Unixの哲学は、一つのことだけを行い、それをうまく行うツールを持つことです。
関連
-
LinuxでPingを無効にする、または許可する設定方法
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド
-
[解決済み] git リポジトリの行数をカウントする
-
[解決済み] grep -R からディレクトリを除外するにはどうすればよいですか?
-
[解決済み] ディレクトリをTarするが,完全な絶対パスはアーカイブに保存しない
-
[解決済み】ドキュメントの行数を数えるには?[クローズド]。
-
[解決済み】ディレクトリとサブディレクトリのsedによる検索と置換
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linuxにおけるxinetdサービスの管理方法に関するケーススタディ
-
deepin20のサブネットマスクはどこですか?deepinのサブネットマスクを表示するためのヒント
-
Kali Linuxのマウスライトテーマを変更する方法は?マウスカーソルのテーマを変更するためのヒント
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
Linux 5.10.10 正式版リリース:NULLポインタの不具合修正など。
-
Linux Mintのシステムバージョン情報はどこにありますか? Linux Mint のシステム情報を見るためのヒント
-
LinuxでJenkinsプラグインのインストールが遅い場合の解決策
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?