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

find -Pオプションの使い方|シンボリックリンクを辿らない(デフォルト動作)をやさしく解説

find -Pオプション|シンボリックリンクを辿らない(デフォルト)
find -Pオプション|シンボリックリンクを辿らない(デフォルト)

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

生徒

「先生、Linuxのfindコマンドって、リンク先も勝手に探しに行くんですか?」

先生

「いい質問ですね。実は、findはデフォルトでシンボリックリンクを辿らないんです。」

生徒

「えっ?じゃあ、リンクを辿って中身を探すことはないんですか?」

先生

「そのとおり。-Pオプションを使えば、明示的に“リンクを辿らない”ことを指定できます。では、くわしく見ていきましょう!」

1. findコマンドとは?

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

findコマンドは、Linuxでファイルやディレクトリを検索するためのコマンドです。特定の名前、サイズ、更新日、所有者などの条件を指定して、目的のファイルを探すことができます。たとえば「あるフォルダの中に.txtファイルをすべて探したい」などのときに使います。

2. シンボリックリンクとは?初心者向けに解説

2. シンボリックリンクとは?初心者向けに解説
2. シンボリックリンクとは?初心者向けに解説

シンボリックリンク(英語で symbolic link)は、Windowsでいう「ショートカット」のようなものです。リンクされたファイルやフォルダへの“案内板”のような役割をもちます。

たとえば、data.txtというファイルに対してlink.txtというシンボリックリンクを作ると、link.txtを通じてdata.txtの中身にアクセスできるようになります。

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

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

-Pオプションは、「シンボリックリンクを辿らないでください」という意味です。実はこれがfindコマンドのデフォルト(初期設定)の動作です。

でも、他のオプションとの組み合わせや、スクリプトで使うときに挙動を明確にするために、あえて-Pを明示することもあります。

なお、逆に「リンク先を辿りたい」ときは-Lオプションを使います。

4. 実際にfind -Pを使ってみよう

4. 実際にfind -Pを使ってみよう
4. 実際にfind -Pを使ってみよう

まず、サンプルのディレクトリを用意します。次のように、普通のファイルとシンボリックリンクを用意して確認してみましょう。


mkdir testdir
cd testdir
touch realfile.txt
ln -s realfile.txt linkfile.txt
find -P .
.
./realfile.txt
./linkfile.txt

この例では、realfile.txtと、それを指すlinkfile.txtというシンボリックリンクがあります。

find -P .では、リンクそのもの(linkfile.txt)は表示されますが、リンク先の中身は検索されません。

5. -Pオプションと他のfindオプションの組み合わせ

5. -Pオプションと他のfindオプションの組み合わせ
5. -Pオプションと他のfindオプションの組み合わせ

たとえば「特定の名前を持つファイルを探す」場合も、-Pを付けることでリンクを辿らずに検索できます。


find -P . -name "realfile.txt"
./realfile.txt

このように、リンクの先にあるrealfile.txtではなく、本体が存在している場所だけが結果に出ます

6. -P(リンクを辿らない)と-L(リンクを辿る)の違い

6. -P(リンクを辿らない)と-L(リンクを辿る)の違い
6. -P(リンクを辿らない)と-L(リンクを辿る)の違い

初心者の方が混乱しやすいのが、-P-Lの違いです。

  • -P:リンクを辿らない(デフォルト)
  • -L:リンクを辿って検索する

たとえば、次のようにするとリンク先のファイルも検索対象になります。


find -L . -name "realfile.txt"
./realfile.txt
./linkfile.txt

-Lを使うと、linkfile.txtの先にあるrealfile.txtも検索されてしまいます。

7. find -Pが役立つ場面とは?

7. find -Pが役立つ場面とは?
7. find -Pが役立つ場面とは?

Linuxでは、リンクが複雑に張り巡らされている場合があります。例えば、大きなログファイルや設定ファイルなどを指すリンクをうっかり辿ってしまうと、処理時間が増えたり、無限ループのような構造に入り込んだりしてしまうこともあります。

そのため、-Pを明示して「リンクは無視して本体だけを探す」ことで、安全で効率的な検索が可能になります。

8. findコマンドの-Pオプションと似たコマンドの比較

8. findコマンドの-Pオプションと似たコマンドの比較
8. findコマンドの-Pオプションと似たコマンドの比較

lsduなど、他のLinuxコマンドでも「リンクを辿るかどうか」は重要な違いになります。

ls -lではリンク先が矢印(→)で表示されますし、du -Lではリンク先のサイズまで含まれます。

このように、Linuxのコマンドでは「リンクを辿るかどうか」は明示的に考える必要があります。findの場合も、-P-Lを使い分けることで、検索の精度が格段に上がります。

関連記事:
カテゴリの一覧へ
新着記事
New1
シェルスクリプトの基本
シェルスクリプトを書くときにおすすめのエディタと開発環境
New2
Linuxコマンドの基本
Linuxのパイプ(|)とは?複数コマンドをつなげて効率化する方法を完全解説
New3
テキスト・データ処理
tailコマンドとは?Linuxでファイルの末尾を表示する基本をやさしく解説!
New4
ファイル・ディレクトリ操作
find -groupオプションの使い方を解説!初心者でもできる所有グループによるファイル検索
人気記事
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
圧縮・アーカイブ
gzipコマンドの使い方を完全ガイド!初心者でもわかるLinuxでファイル圧縮の基本