如何在Linux中的目录和子目录中的特定单词之下找到特定单词的文件/(文件的pwd)

时间:2018-09-21 04:36:01

标签: linux unix operating-system

我有200个文件夹,每个文件夹有多个shell和sql文件,我的要求是grep / find所有具有以下内容的目录和文件

插入dbname.table_name

选择

我想知道插入到$ {dbname}。{table_name}中的所有文件(文件的pwd)是什么,然后是下一行中的select。所有人的数据库名称和表名称相同

1 个答案:

答案 0 :(得分:1)

您可以使用grep -r -i -A1 "insert.into" | grep -i -B1 select

-r将对当前目录中的所有文件进行grep,并在所有子目录中对其进行递归。

-A1在匹配的行后 A 打印一行,

-B1在匹配的行之前打印一行 B

因此,上面的第一个grep将打印与insert.into匹配的所有行以及下一行;第二个grep将仅保留第二行中带有select的那些对。

({-i忽略大小写)

然后您可以附加| grep -i insert.into | cut -d: -f1 | sort -u以获得仅文件名。

请注意,这里有一些假设:

  • 选项-A/-B仅在Linux / gnu上,不适用于像HPUX这样的普通Unix。
  • 如果您同时包含insert.intoselect的行,则会得到一些时髦的输出。