如何搜索包含特定文本的整个Linux服务器文件?

时间:2017-03-23 01:51:47

标签: linux text grep directory find

要在文件夹和子文件夹中搜索特定文本(我的示例中为IP地址),我会使用以下内容:

find / -type f -exec grep -liz '45.20.20.77' {} \;

grep -rnwl '/' -e "45.20.20.77" 2>/dev/null

但是我在使用cd /用户在Vultr上运行的CentOS root时遇到问题:

  • 很多"Permission Denied"错误(使用2>/dev/null解决)
  • 当某个系统文件夹达到procsys
  • 时会冻结

/var/lib/cloud/instances/冻结之后,在我的Vultr服务器上。 如果没有来自某个文件夹或文件的答案,是否可以设置一些超时?我知道我可以使用find ! -path "./proc/*",但我想要一些可以自动扫描整个服务器而无需手动排除目录的东西。

1 个答案:

答案 0 :(得分:0)

@ kostya572!

我认为你必须更多地研究你的问题,以获得一个真正的自动解决方案。所以,这里只是一些头脑风暴。我希望它有所帮助。

你当然已经知道了,但使用2> /dev/null可能无法解决任何错误,只需隐藏它。

也许这些错误与中间有空格的文件有关,例如Program Files,因为Posix实用程序在文件名中包含空格时会出现长期问题。在这种情况下,他们大多数时候会认为这个表达式描述了两个目录,而不是一个目录。其中一个名为Program,另一个名为Files

如果既没有名为Program的目录也没有名为Files的目录,则错误消息将为Permission denied,如您所述。

一个想法是分离一些问题。例如,您可以将find个文件与grep个文件分开。例如,使用xargs

如果您了解什么工具是冻结的罪魁祸首,您可以使用timeout(运行man timeout了解更多信息)来控制此工具可以采取的时间。

在任何情况下,您都可以运行find / -maxdepth 1 -mindepth 1 -type d来控制文件系统的第一级。然后,您可以为每个第1级目录发出查找。

祝你好运!