find -xdevオプションをやさしく解説|マウントポイントを跨がずに検索する方法
生徒
「Linuxでfindコマンドを使ってファイルを探してるんですけど、外付けハードディスクの中まで検索されちゃいます。」
先生
「それはfindコマンドが、マウントされた別のファイルシステムも対象にしているからですね。」
生徒
「外付けのドライブや別のパーティションは検索したくないんです。」
先生
「そんなときは-xdevオプションを使えば、検索範囲を現在のファイルシステムの中だけに限定できますよ!」
1. findコマンドの基本と検索の仕組み
findコマンドは、Linuxでファイルやディレクトリを検索する標準的なコマンドです。指定したディレクトリ以下を再帰的にたどりながら、条件に一致するファイルを探します。
ただし、デフォルトではマウントされた別のファイルシステム(たとえば外付けHDDや他のパーティション)も含めて検索してしまうため、検索対象が広がり、時間もかかってしまいます。
2. -xdevオプションとは?
-xdevオプションは、現在のファイルシステム(デバイス)だけを検索対象にするためのオプションです。
たとえば、/直下に/mnt/usbという外付けHDDがマウントされていたとして、通常のfindではその中まで検索してしまいますが、-xdevを付けることで、/mnt/usbは無視されます。
これはシステム管理やバックアップスクリプトなどでもよく使われる重要なオプションです。
3. 基本的な使い方
たとえば、現在のルートディレクトリ(/)以下で.logファイルを探す場合、以下のように書きます:
find / -name "*.log" -xdev
このコマンドでは、ルートディレクトリ配下で現在のファイルシステムに限定して.logファイルを検索します。
4. -mountとの違いは?
-xdevとほぼ同じ意味で使えるのが-mountオプションです。実はこの2つは動作としては同じで、完全に同義語です。
つまり、-mountを使っても-xdevを使っても、別ファイルシステムを跨がないように検索できます。
違いは「書き方」だけです。-mountの方が読みやすいと感じる人もいれば、-xdevの方が覚えやすいという人もいます。
5. -xdevを使ったファイル検索の実例
例えば、/homeディレクトリで所有者が自分の.txtファイルを探したいときは、次のようにします。
find /home -xdev -user $(whoami) -name "*.txt"
このコマンドは、ホームディレクトリ以下の自分の.txtファイルだけを検索し、別パーティションがマウントされている場所には入らないという安全な使い方です。
6. -xdevの注意点と知っておくと便利な知識
一見便利な-xdevですが、ネットワークドライブや外付けストレージの中も検索したい場合には向いていません。特定のディレクトリまで検索対象にしたいときは、-xdevを外すか、検索ディレクトリを個別に指定しましょう。
また、組み合わせとしては-typeや-size、-mtimeなどのオプションと併用することで、より柔軟な検索ができます。
例:
find /var -xdev -type f -size +10M -mtime -7
このように書くと、/var以下で10MB以上・7日以内に更新されたファイルを検索し、別ファイルシステムは対象にしません。
7. dfコマンドと組み合わせて使うとさらに便利
dfコマンドは、ファイルシステムの使用状況を表示するコマンドです。
find -xdevを使う前に、dfでどこがどのファイルシステムなのか確認しておくと、より正確な検索対象を判断できます。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 20G 80G 20% /
/dev/sdb1 500G 300G 200G 60% /mnt/usb
この例では、/mnt/usbが別のファイルシステム(/dev/sdb1)であることがわかります。つまり、find -xdevで検索すれば、/mnt/usbはスキップされるということです。
8. まとめて練習!一緒に試してみよう
それでは、実際に練習してみましょう。たとえば、/etc配下にある.confファイルを現在のファイルシステム内だけで探すには、次のようにします。
find /etc -xdev -name "*.conf"
実行結果は環境によって異なりますが、以下のように表示されるかもしれません。
/etc/fstab
/etc/ssh/sshd_config
/etc/systemd/system.conf
このように、-xdevを使えば、余計な場所を検索せずに効率よくファイルを見つけることができるのです。