1

我需要一个 Shell 脚本,它接受两个输入,它们是

  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搜索当前目录.和所有子目录中的所有文件
    • -l仅输出path/filename具有与模式匹配的文本的文件
  • filename已从所有输出中删除,因此仅保留path(即目录)
  • 然后对路径进行排序和计数。

它的输出将如下所示:

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

第一列是目录中模式的匹配数量,第二列是目录的名称(.是主目录)。

于 2012-08-07T10:31:14.247 回答