如何在多个文件中搜索重复的,未知的字符串

时间:2014-08-16 07:44:31

标签: linux bash find

我正在合并几个不同的Linux内核分支,但是我已经发现在从几个Kconfig文件的git diff添加更改之后,我的基本源代码已经在另一个目录中有了一些配置#s; s Kconfig文件。

所以,我正在寻找类似于此的结果/输出:

  找到。 -name .git -prune -o -type f(-name' Kconfig *') - print0 | xargs -0 grep --color -n" $ @"

...除了搜索在该命令末尾输入的已知单词或字符串之外,我需要在不知道字符串的情况下在不同的Kconfig文件中查找重复项。

例如:我将配置ARCH_VEXPRESS 添加到arch / arm / Kconfig,更像是它,它位于第二个分支中......因为它在我的基地分支失踪了。我后来发现有很多重复,因为它已经存在于arch / vexpress / Kconfig或其他Kconfig中。

那么,有没有人知道我可以用来搜索所有Kconfig *文件的命令或bash脚本,以获得" config $ @ "的重复项。 没有输入$ @ STRING ???

我希望它能输出/显示文件名/位置,重复的字符串,最好是它们都位于的行号。

1 个答案:

答案 0 :(得分:2)

find . -name .git -prune -o -type f -name 'Kconfig' -print0 |
    xargs -0 awk '/^config/ { count[$2]++; files[$2] = files[$2] " " FILENAME":"FNR; }
                  END { for (keyword in count) {
                        if (count[keyword] > 1) { print keyword files[keyword] }
                        }
                    }'