要在文件夹和子文件夹中搜索特定文本(我的示例中为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
解决)proc
,sys
在/var/lib/cloud/instances/
冻结之后,在我的Vultr服务器上。
如果没有来自某个文件夹或文件的答案,是否可以设置一些超时?我知道我可以使用find ! -path "./proc/*"
,但我想要一些可以自动扫描整个服务器而无需手动排除目录的东西。
答案 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级目录发出查找。