Find

如何使用 find 排除 NFS 目錄?

  • December 23, 2021

我需要搜尋沒有使用者或沒有組的文件。

find / -nouser -o -nogroup

我認為這沒關係。但是,我不想搜尋 NFS 共享。如何在 find 命令中排除 NFS 共享?

使用 GNU find,您可以使用-fstype謂詞:

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

話雖如此,hymie 的方法可能更有意義:將您想要搜尋的 FS 列入白名單,而不是將您不想搜尋的 FS 列入黑名單。

如果您只想包含jfs2文件系統(假設/是 on jfs2),那麼您需要編寫它:

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

不要寫它:

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

雖然這將停止find在非 jfs2 文件系統中列印文件,但這不會阻止它爬取那些非 jfs2 文件系統(您需要-prune)。

請注意,-a( AND如果省略則隱含) 優先於-o( OR ),因此您需要注意是否需要括號。

上述正確命令的縮寫:

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

最接近的可能是使用-xdev,這意味著“不要在其他文件系統上下降目錄”。然後,您需要指定要搜尋的文件系統

引用自:https://unix.stackexchange.com/questions/63950