在子文件夹中的文件中找到tekst

时间:2017-10-25 15:43:49

标签: linux find

所以之前可能会问过这个问题,但经过几个小时的搜索(或错误搜索),我决定问这个问题。 如果之前已经回答过,请将问题与我联系并关闭。

这是我的问题。

我的文件系统上有一个文件夹,即"文件"。这个文件夹有很多子文件夹及其子文件夹。在某些级别深层,它们都有一个在所有文件夹中都被称为相同的文件。在该文件中,其中包含大量文本,但并非完全相同。我需要一个包含某个字符串的文件列表。

我知道我可以用

做到这一点
find ./ -type f -exec grep -H 'text-to-find-here' {} \;

但主要问题是:它将克服该文件系统上的每个文件。由于文件系统包含数百万个文件,这将花费很长时间,特别是当我知道这段文本应该存在的确切文件时。

在视觉上它看起来像这样:

foobar/foo/bar/file.txt 
foobar/foobar/bar/file.txt
foobar/barfoo/bar/file.txt
foobar/raboof/bar/file.txt
foobar/oof/bar/file.txt

我需要file.txt中的特定字符串(如果该字符串存在..) (是的:/ bar /中的文件是ALLWAYS,称为file.txt ...)

任何人都可以帮我解决这个问题吗?我在#34; easy"解决方案:o

日Thnx, 丹尼尔

2 个答案:

答案 0 :(得分:1)

使用-name选项按名称进行过滤:

find . -type f -name file.txt -exec grep -H 'text-to-find-here' {} +

如果它始终位于名为bar的目录中,则可以将-path与通配符一起使用:

find . -type f -path '*/bar/file.txt' -exec grep -H 'text-to-find-here' {} +

答案 1 :(得分:0)

使用单个GNU grep 命令:

grep -rl 'pattern' --include=*file.txt
  

<强> --include=glob

     

使用通配符

仅搜索名称与glob匹配的文件