カテゴリ: Linuxコマンド集 更新日: 2026/06/22

find -Hオプションの使い方|コマンドライン引数のシンボリックリンクだけを辿る方法を初心者向けに解説!

find -Hオプション|コマンドライン引数のシンボリックリンクのみ辿る
find -Hオプション|コマンドライン引数のシンボリックリンクのみ辿る

先生と生徒の会話形式で理解しよう

生徒

「findコマンドでシンボリックリンクを辿って検索したいんですが、-Lを使うと全部のリンクを辿ってしまいますよね?ちょっと限定的に辿りたいんですけど…」

先生

「そんなときは-Hオプションが便利です。指定したパスがシンボリックリンクだったときだけ辿るんですよ。」

生徒

「それって他のリンクは辿らないんですか?」

先生

「そうです。コマンドライン引数で指定した部分だけを辿るので、安全かつ必要なところだけリンクをたどって検索できます。」

1. findコマンドとは?

1. findコマンドとは?
1. findコマンドとは?

findコマンドは、Linuxでファイルやディレクトリを効率的に検索できる便利なコマンドです。名前や更新日、ファイルサイズなど、さまざまな条件で目的のファイルを見つけることができます。

特にLinuxのようなファイル構造が複雑なシステムでは、findコマンドは非常に重宝されます。

2. シンボリックリンクとは?

2. シンボリックリンクとは?
2. シンボリックリンクとは?

シンボリックリンクとは、あるファイルやディレクトリへの「案内板」のようなもので、リンクを通して別の場所のファイルにアクセスできます。

例えば/home/user/logs/var/logへのリンクになっていれば、logsを操作すると実際には/var/logにアクセスしていることになります。

3. find -Hオプションとは?

3. find -Hオプションとは?
3. find -Hオプションとは?

-Hオプションは、コマンドライン引数にあるシンボリックリンクのみを辿って検索するオプションです。

つまり、findコマンドに指定したディレクトリ自体がリンクであった場合にだけ、そのリンク先を辿って検索を行います。

途中に現れる他のシンボリックリンクは無視され、リンク先の中身までは見に行きません。

4. find -Hオプションの使い方

4. find -Hオプションの使い方
4. find -Hオプションの使い方

たとえば、/logsというシンボリックリンクが/var/log/apache2を指しているとします。

このとき、/logsをfindの引数に指定すれば、-Hでリンク先の中まで検索できます。


find -H /home/user/logs -name "*.log"
/home/user/logs/access.log

一方で、/home/user/logsの中にさらに別のリンクがあっても、-Hではその中までは辿りません。

5. -Hと-Lと-Pの違いを比較

5. -Hと-Lと-Pの違いを比較
5. -Hと-Lと-Pの違いを比較

-Hの動作をより理解するために、似ているオプション-L-Pとの違いを比べてみましょう。

  • -L:すべてのシンボリックリンクを辿って検索
  • -H:コマンドライン引数だけを辿る
  • -P:リンクは一切辿らない(デフォルト動作)
例:リンクを含む構造

/shortcut/var/logs(←リンク)
/var/logs/syslink/etc/config

● -H の場合

find -H /shortcut -name "config.yaml"
/shortcut/syslink は辿られない(出力なし)
● -L の場合

find -L /shortcut -name "config.yaml"
/shortcut/syslink/config.yaml
● -P の場合

find -P /shortcut -name "config.yaml"
(リンク無視。出力なし)

6. -Hを使うべき場面とは?

6. -Hを使うべき場面とは?
6. -Hを使うべき場面とは?

-Hオプションが役立つのは、リンクの中まで見たいけれど、他の場所のリンクは辿りたくないときです。

例えば、ログディレクトリだけ別の場所にあって、そこだけ検索対象にしたい場合などに向いています。

7. シンボリックリンクの確認方法

7. シンボリックリンクの確認方法
7. シンボリックリンクの確認方法

指定しようとしているディレクトリがシンボリックリンクかどうかは、ls -lコマンドで確認できます。


ls -l /home/user
lrwxrwxrwx 1 user user 20 Sep 16 11:00 logs -> /var/log/apache2

このようにでリンク先が表示されているものが、シンボリックリンクです。

8. -Hと他のオプションの組み合わせ

8. -Hと他のオプションの組み合わせ
8. -Hと他のオプションの組み合わせ

-Hは他の条件と組み合わせることで、より柔軟にファイル検索が可能になります。

● 更新日が3日以内のファイルを検索(指定リンクだけ辿る)

find -H /logs -mtime -3
/logs/access.log
● ファイルの種類を絞って検索(リンク元のみ対象)

find -H /logs -type f -name "*.conf"
/logs/apache.conf

9. トラブルを避けるための注意点

9. トラブルを避けるための注意点
9. トラブルを避けるための注意点

-Hオプションは限定的にリンクを辿るため、リンクの中にさらにリンクがある場合は対象外になります。

そのため、複雑なリンク構造がある場合は、検索できないファイルが出てくることもあります

そうしたケースでは、-L-followを使うことも検討してください。

関連記事:
カテゴリの一覧へ
新着記事
New1
圧縮・アーカイブ
bunzip2 -fオプションの使い方を完全ガイド!Linuxで圧縮ファイルを強制上書きする方法
New2
テキスト・データ処理
headコマンドとは?Linuxでファイルの先頭部分を表示する基本
New3
Linuxコマンドの基本
Linuxのパスの基本!絶対パスと相対パスの違いを初心者向けにやさしく解説
New4
ディスクとファイルシステム管理
mountコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイルシステムマウント方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
catコマンドとは?Linuxでファイル内容を表示・連結する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.4
Java&Spring記事人気No4
圧縮・アーカイブ
tarコマンドの使い方を完全ガイド!初心者でもわかるLinuxのアーカイブ作成と解凍の基本