如何用find排除NFS目录?


9

我需要搜索没有用户或没有组的文件。

find / -nouser -o -nogroup

我认为可以。但是,我不想搜索NFS共享。如何在find命令中排除NFS共享?


2
find / -fstype ext4 -nouser -o -nogroup如果您不使用ext4,请尝试 替换ext3,等等
doneal24

1
请将此作为答案发布
gasko peter

@ DougO'Neal,您应该将其发布为答案。
肯尼迪

1
@ DougO'Neal,这不会停止find下降到nfs FS,只是不打印它将在那找到的文件。
斯特凡Chazelas

对于使用-exec喜欢的东西du结合-fstype-xdev(又名-mount)似乎有必要
格特·范登贝尔赫

Answers:


7

使用GNU find,您可以使用-fstype谓词:

find / -fstype nfs -prune -o \( -nouser -o -nogroup \) -print

话虽如此,hymie的方法可能更有意义:将您要搜索的FS列入白名单,而不是将您不想搜索的FS列入黑名单。

如果您只想包含jfs2文件系统(假设/位于jfs2),则需要编写它:

find / ! -fstype jfs2 -prune -o \( -nouser -o -nogroup \) -print

不要写:

find / -fstype jfs2 \( -nouser -o -nogroup \) -print

尽管那会停止find在非jfs2文件系统中打印文件,但这不会阻止它对那些非jfs2文件系统(您需要-prune)进行爬网。

请注意,-aAND,如果省略则隐式)优先于-oOR),因此您需要注意是否需要括号。

上面的正确命令的缩写为:

find / \( \( ! -fstype jfs2 \) -a -prune \) -o \
  \( \( -nouser -o -nogroup \) -a -print \)

10

您可能会得到的最接近的结果是使用-xdev,这意味着“不要降级其他文件系统上的目录”。然后,你需要指定哪些文件系统希望搜索。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.