2012-08-07 57 views
1

我需要一个shell脚本采取的两个输入shell脚本中找到数

    它必须搜索
  1. 主目录和
  2. 模式中进行搜索的目录和输出数搜索模式主目录所有文件(.c和.h文件)

它必须打印在主目录&每个子目录中找到的模式的数量。

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

计算事物的一种方法是使用'wc'命令;例如如果您可以让您的搜索每行生成一个文件,则'wc -l'会打印行数(因此会打印文件数量)。 – 2012-08-07 06:02:29

回答

0

这应做到:

#!/bin/sh 

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

其工作原理如下:

  • 首先找到使用grep
    • -r搜索中的所有文件中的说法$1供应格局当前目录.和所有su bdirectories
    • -l只输出具有文本的图案匹配
  • filename从所有输出除去,从而只path(即,目录)保持然后
  • 的路径被分类和文件的path/filename计数。

它的输出将看起来像这样:

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

第一列是在一个目录中的模式的匹配的量,第2栏是该目录的名称(.是主目录) 。

+0

嗨,这工作对我来说,但在shell脚本我有这个命令作为一个单独的文件,但我将如何输入模式到这个文件 – user1580988 2012-08-07 13:03:46

+0

我编辑脚本,现在可以运行一个参数。 – Sicco 2012-08-07 13:08:34

+0

此答案解决您的问题吗? – Sicco 2012-08-15 15:45:20