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」とともに使います(ディレクトリを参照)。