1

2つの入力を受け取るシェルスクリプトが必要です。

  1. 検索する必要があるメインディレクトリと
  2. メインディレクトリ内のすべてのファイル(.cおよび.hファイル)を検索するパターン

メインディレクトリと各サブディレクトリで見つかったパターンの数を出力する必要があります。

main dir    --> Total pattern found = 5
  |
  sub dir   --> 3
  |
  sub dir   --> 2
4

1 に答える 1

0

これはそれを行う必要があります:

#!/bin/sh

grep -rl "$1" . | sed -r 's/\/[^\/]+$//' | sort | uniq -c

次のように機能します。

  • まず、引数で指定されたパターン$1を使用して見つけますgrep
    • -r.現在のディレクトリとすべてのサブディレクトリ内のすべてのファイルを検索します
    • -lpath/filenameパターンに一致するテキストを持つファイルのみを出力します
  • filenameすべての出力から削除されるため、path(つまりディレクトリ)のみが残ります
  • 次に、パスが並べ替えられ、カウントされます。

その出力は次のようになります。

      2 .
      3 ./sub_dir1
      1 ./sub_dir2
      6 ./sub_dir2/a_sub_sub_dir

最初の列はディレクトリ内のパターンの一致数であり、2番目の列はディレクトリの名前(.メインディレクトリ)です。

于 2012-08-07T10:31:14.247 に答える