findを使用してNFSディレクトリを除外する方法は?

findを使用してNFSディレクトリを除外する方法は?

ユーザーやグループなしでファイルを検索する必要があります。

find / -nouser -o -nogroup

これは大丈夫だと思います。しかし、NFS共有を検索したくありません。 findコマンドからNFS共有を除外する方法は?

答え1

あなたが得る可能性が最も近いのは、-xdev「他のファイルシステムにディレクトリを削除しないでください」を意味するuseです。次に、使用するファイルシステムを指定する必要があります。する検索したいです。

答え2

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

これは、jfs2以外のファイルシステムのファイルが印刷されるのを防ぎますが、findjfs2以外のファイルシステムをクロールするのを防ぎません(必要です-prune)。

気づく-aそして-o省略した場合は暗黙)が(より優先されます)。または)なので、かっこが必要かどうかに注意を払う必要があります。

~上正しいコマンドの略語は次のとおりです。

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

答え3

使いやすい- いいえ

 find / -not -fstype nfs -nouser -o -nogroup

プロパティ

答え4

特定の検索オプションを試しましたが、問題が発生して次の方法に切り替えました。

find $(mount | awk '!/:/ {printf "%s ", $3}') -xdev

NFSがマウントされていないすべてのファイルシステムを検索する必要があります。

関連情報