find -mountオプションの使い方を解説!別ファイルシステムをまたがずに検索する方法
生徒
「Linuxでファイルを探すときに、他のドライブの中まで検索されて遅くなることがあるんですが、何とかできませんか?」
先生
「それなら、findコマンドの-mountオプションを使うといいですよ。今いるファイルシステムだけを対象に検索できます。」
生徒
「ファイルシステムってなんですか?それと、このオプションはどうやって使うんですか?」
先生
「ファイルシステムについても含めて、詳しく説明していきますね!」
1. find -mountオプションとは?
find -mountオプションは、現在のファイルシステムだけを対象にして検索するためのものです。別のドライブやマウントされた外部ストレージなどに入っていかず、不要な部分まで検索しないため、検索時間が短くなります。
この-mountオプションは、別名-xdevとも書かれており、どちらを使っても同じ意味になります。
2. ファイルシステムとは何か?初心者向けに解説
ファイルシステムとは、データを保存・管理するための仕組みのことです。たとえば、USBメモリをパソコンに挿すと、「別の場所として認識される」ことがありますよね。それぞれが独立したファイルシステムになっています。
Linuxでは、これらを/mntや/mediaなどに「マウント」して、ひとつのツリー構造のように扱います。
findコマンドは、デフォルトではこの別ファイルシステムの中まで全部探しに行ってしまうため、不要なファイルまで検索してしまい、時間がかかる原因になります。
3. -mountオプションを使った基本例
たとえば、自分のホームディレクトリの中を検索したいけど、外部ドライブやマウントされたフォルダは除外したい場合、次のように使います。
find ~ -mount
/home/user/Documents
/home/user/Downloads
/home/user/Pictures
このように、同じファイルシステム内の結果だけが表示されます。
4. 実際の用途:バックアップや検索の高速化に便利
この-mountオプションは、特に次のようなケースでよく使われます。
- バックアップスクリプトで、外部ストレージを除外したいとき
- USBや外付けHDDにマウントされた領域を除いて、メインのストレージだけを検索したいとき
- 無駄に深い場所まで探すのを防いで、処理速度を上げたいとき
初心者の方でも、これを使うことで予期しない大規模検索を避けることができます。
5. -mountと組み合わせた検索例
たとえば、ホームディレクトリ内で「.txt」で終わるファイルを検索し、別ファイルシステムを除外したい場合はこう書きます。
find ~ -mount -name "*.txt"
/home/user/notes/todo.txt
/home/user/backup/report.txt
このように、-nameオプションと一緒に使うことで、特定のファイル名パターンにマッチするファイルだけを効率よく探せます。
6. -mountとfind -typeオプションの組み合わせ
-typeオプションと組み合わせると、さらに対象を絞り込めます。
たとえば、ディレクトリだけを検索したいときは以下のようにします。
find ~ -mount -type d
/home/user/Documents
/home/user/Pictures
逆に、通常ファイル(テキストファイルや画像など)だけを探す場合は-type fを使います。
7. -mountと-mountpointの違い
初心者の方が混乱しがちなのが、-mountと-mountpointの違いです。
- -mount:検索の範囲を同じファイルシステム内に限定する
- -mountpoint:検索対象が「マウントポイントであるかどうか」を条件にする(別の意味)
つまり、-mountは検索の範囲に関する指定、-mountpointは検索の対象に関する条件となるため、意味がまったく異なります。
8. -mountオプションの別名:-xdev
実は、-mountは-xdevというオプション名でも使えます。
コマンドラインでスクリプトを書く人や、古い書籍などでは-xdevが使われていることもあるので、覚えておくと役に立ちます。
find / -xdev -name "*.log"
/var/log/syslog.log
/var/log/kern.log
-mountと同じように動作することが確認できます。