このページの内容

2.12 ファイルシステム

ファイルシステムは、ローカルホスト上、またはネットワーク越しにリモートホストからマウントした、ディスクの一区画です。ネットワーク上のファイルシステムの検索は遅くなることがあるため、findで検索を避けることがよくあります。

特定のファイルシステムの検索を避ける方法は2つあります。1つは、現在検索している開始点と同じファイルシステム内だけを検索するよう、findに指定する方法です。

オプション: -mount

ほかのデバイス上のファイルを無視します。マウントポイントを訪問せず、その内部も検索しません。「-L」や「-H」などによりfindがシンボリックリンクをたどっていても、そのリンク先が別のファイルシステム内のディレクトリであれば、内部を検索しません。

オプション: -xdev

マウントポイントを訪問しますが、その子は訪問しません。つまり、ほかのデバイス上のディレクトリへは下りません。-mount -xdevを使うと、「-mount」と同じ効果になります。

ここでは、通常findが「tree/bound1」にマウントされたファイルシステムの内部を検索することを確認できます。

$ find tree -printf 'device: %5D path: %p\n'
device:    40 path: tree
device: 64770 path: tree/bound1
device: 64770 path: tree/bound1/on-another-fs

「-xdev」を指定すると、マウントポイントは訪問しますが、その内部は検索しません。

$ find tree -xdev -printf 'device: %5D path: %p\n'
device:    40 path: tree
device: 64770 path: tree/bound1

「-mount」を指定すると、マウントポイント自体を訪問しません。

$ find tree -mount -printf 'device: %5D path: %p\n'
device:    40 path: tree

これらの例では、「-printf」の「%D」指定子で各項目のデバイス番号を表示し、ファイルが別々のデバイス上にあることを示しました。ファイル情報を表示するを参照してください。

もう1つは、各ファイルが置かれたファイルシステムの種類を調べ、対象から外したい種類のファイルシステム上のディレクトリに進まない方法です。

テスト: -fstype type

ファイルが、種類typeのファイルシステム上にある場合に真になります。有効なファイルシステムの種類は、Unixの版によって異なります。いずれかのUnixの版で受け付けられる種類の、不完全な一覧を次に示します。

autofs ext3 ext4 fuse.sshfs nfs proc sshfs sysfs ufs tmpfs xfs

「-printf」と「%F」指定子で、ファイルシステムの種類を確認できます。「-fstype」は、リモートのファイルシステムを検索しないよう、通常「-prune」とともに使います(ディレクトリを参照)。