如何查找可能存在于整个文件系统中某些未知文件中的文本字符串

如何查找可能存在于整个文件系统中某些未知文件中的文本字符串

我遇到了一个问题,我在某个文件中有一行“something”。我忘记了这行是在哪个文件中。在整个根文件系统中,我想找出这行是哪个文件以及在哪里。那么我该怎么做呢?我使用过 find,但是当我使用 find 时,我知道文件的名称,在这种情况下,我也不知道文件的名称。这是一个 Ubuntu 服务器 10.04,那么我该怎么做才能找出哪个文件有这个字符串。

答案1

我总是使用:

find / -xdev | xargs grep "string"

这将为您提供所有匹配字符串以及它们所在的实际文件的列表。

答案2

一个简单的暴力解决方案是:

find / -type f -exec grep -H 'some string' {} \;

(gnu grep 的 -H 选项使其返回文件名)。

然而,花时间编写一个更智能的脚本可能会对你有所帮助,该脚本可以忽略二进制文件、可执行文件(非脚本)等内容。

答案3

嗯,有很多文件

也许你可以将时间范围缩小到你上次访问该文件的某个时间,然后尝试

find / -xdev -type f -atime -X -exec grep -H 'string' {} \;

其中 X 是从今天开始向前推算的天数,在此期间你确定自己访问过该文件

答案4

也许从根目录运行类似“grep -iR“要查找的文本”*”之类的命令就可以了。

相关内容