Mou*_*Dog 6 filesystems find directory-structure proc
有一些目录可能会导致 find 出现问题,尤其是find /
. 操作系统在这些目录中创建并非真正文件的文件。这些目录中有/proc
/sys
/run
.
问题是,如果你正在做类似的事情find / -exec grep
,如果你爬取这些系统中的一些,你可能会把系统搞得一团糟。
那么我如何告诉 find 跳过这些目录而不列出它们。因为有人可能会决定像这样创建一个新目录。与其依赖列表,我宁愿对目录进行测试,并选择排除未通过此测试的目录。
好的,您不想依赖排除文件的列表,因此您不必冒险排除太少的目录。
因此,让我们依靠说明要包含哪些文件。
这些“不是真正的文件”几乎都位于单独的文件系统上。
这更像是“不是真正的文件系统”,只是看起来很相似。
我们可以说的是,它们不在我们的“真实”文件系统上。
假设我们有两个分区,安装在/
和 `/home' 中:
有了选项-xdev
,我们就可以find
在这些已知的好地方运行,而不是别的:
find / /home -xdev -exec grep ...
Run Code Online (Sandbox Code Playgroud)
一些奇怪的文件仍然可能混入我们的正常文件中(参见上面的“几乎全部”)。
它们确实会引起问题:如果有一个被遗忘的fifo
文件,并且您对它运行 grep ,那么您的 grep 会尝试读取它,然后永远等待。
我们可以排除所有危险类型,但看看 的可能文件类型-type
,我们真正需要的文件类型并不多:f
、d
和l
符号链接。
我们只需要注意包含部分或全部键入的f
, d
and l
,或排除b
, c
, p
, s
and D
。
find / /home -xdev -type f -exec grep ...
Run Code Online (Sandbox Code Playgroud)
或者如果我们想包含符号链接:
find /home/me/dirWithSomeLinksToFiles -xdev \( -type f -or -type d \) -exec grep ...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6241 次 |
最近记录: |