fstype 奇妙な動作で「検索」を除外

fstype 奇妙な動作で「検索」を除外

「find」コマンドで「/proc」ファイルシステムを除外しました。私は、GNUベースではないホスト(たとえば、「find」に「-path」オプションがない最も古いAIX)で使用できるポータブルソリューションを好みます。

Linuxホストで試した内容と部分的にフィルタリングされた出力は次のとおりです。

$found/!-fstype プロセス>/dev/null
あなたが探しているもの: `/proc/9475/task/9535/fdinfo/7':そのファイルやディレクトリはありません
検索: `/proc/10856': 該当するファイルやディレクトリがありません。
検索: `/proc/10856': 該当するファイルやディレクトリがありません。
検索: `/proc/10858': そのファイルやディレクトリはありません。
検索: `/proc/10858': そのファイルやディレクトリはありません。
検索: `/proc/15650': そのファイルやディレクトリはありません。
検索: `/proc/15650': そのファイルやディレクトリはありません。
検索: `/proc/15654': そのファイルやディレクトリはありません。
検索: `/proc/15654': そのファイルやディレクトリはありません。
検索: `/proc/15656': そのファイルやディレクトリはありません。
検索: `/proc/15656': そのファイルやディレクトリはありません。
検索: `/proc/15657': そのファイルやディレクトリはありません。
検索: `/proc/15657': そのファイルやディレクトリはありません。
検索: `/proc/15663': そのファイルやディレクトリはありません。
など....

「!-fstype proc」スイッチにもかかわらず、「find」が「/proc」ファイルシステムから移動し続ける理由を理解できません。

答え1

〜のようにTerdenは説明したfindディレクトリ/procは入力され続けますが、そのファイルシステムタイプのパス名は返されません。

procファイル・システム・タイプが検出されるとすぐに検索パスを削除するには、次のようにします。

find / -fstype proc -prune -o -print

ただし、以前のバージョンでこれを実行したいので、findこの-fstypeオプションを使用できない可能性があります。-path(の標準オプション)も利用できない場合、find実装は明らかにPOSIXと互換性がないため、推奨事項を提示することは少し難しくなります。

選択できる-xdevこれを使用すると、起動findパスと同じファイルシステムに厳密に保持されます。次に、find確認したいファイルシステムごとに1つずつ実行する必要があります。 .-x-xdev

-type d -name proc -pruneこれが不可能な場合は、を使用して名前付きのすべてのディレクトリを無視する必要がありますproc

答え2

この-fstypeディレクティブは、findこのファイルシステムタイプの結果を返さないように指示します。しかし、これがディレクトリを見ないという意味ではありません/proc。これはproc、ファイルシステムで見つかったファイルを返さないという意味にすぎません。ただし、/proc特定のnon-procファイルシステムがマウントされているかどうかを知る方法がないため、まだディレクトリに移動する必要があります/proc/something。たとえば、私のArchで次のことを見つけました。

$ find /proc ! -fstype proc -printf '%p %F\n' 2>/dev/null 
/proc/sys/fs/binfmt_misc binfmt_misc
/proc/sys/fs/binfmt_misc/CLR binfmt_misc
/proc/sys/fs/binfmt_misc/register binfmt_misc
/proc/sys/fs/binfmt_misc/status binfmt_misc

/proc/sys/fs/binfmt_misc/これはprocファイルシステムではないからです。

$ mount | grep proc
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=51,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12642)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)

/procしたがって、non-procファイルシステムが保存される2つのマウントポイントがあります。

したがって、これを念頭に置いて、あなたの質問にはエラーメッセージのみが表示されることに注意してください。これらのファイルは実際には返されないので、期待findどおりに動作するようです。その中にあるファイルを繰り返します/procが、ファイルシステムにある場合は一致するとは見なされませんproc

関連情報