カテゴリ: Linux 更新日: 2026/02/27

findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本

シェルとコマンドの違いを初心者向けに整理
シェルとコマンドの違いを初心者向けに整理

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

生徒

「Linuxでファイルを探したいときって、どうすればいいですか?」

先生

「Linuxではfindコマンドを使うことで、ファイルやディレクトリを検索できますよ。」

生徒

「それって難しい操作じゃないですか?初心者でも使えますか?」

先生

「大丈夫!簡単な例から説明していきます。一緒に覚えていきましょう。」

生徒

「あの、そもそも『コマンド』とか『シェル』とか、言葉の意味がよくわからなくて不安です…。」

先生

「なるほど。ではfindコマンドの詳しい使い方の前に、まずはLinuxを操作する上で欠かせない『シェル』と『コマンド』の違いについて、身近な例えを使って整理しましょう!」

1. シェルとコマンドの違いを初心者向けに解説

1. シェルとコマンドの違いを初心者向けに解説
1. シェルとコマンドの違いを初心者向けに解説

パソコンを触ったことがない方にとって、「シェル(Shell)」や「コマンド(Command)」という言葉は、まるで魔法の呪文のように聞こえるかもしれません。しかし、これらは私たちが普段スマートフォンやパソコンで行っている操作を、文字の世界に置き換えただけのものです。

イメージしやすいように、「レストラン」に例えてみましょう。

  • ユーザー(あなた): お客さん
  • シェル: 注文を聞いてくれる店員さん(窓口)
  • コマンド: 料理の注文メニュー(具体的な命令)
  • カーネル(OSの核): 実際に料理を作るシェフ(中身)

あなたが「ハンバーグをください」と注文するとき、直接厨房に入って調理を始めることはありませんよね。まずは店員さんに注文を伝えます。店員さんはあなたの要望を聞き取り、それをシェフがわかる言葉で伝えてくれます。そしてシェフが料理を作り、店員さんがあなたのテーブルに運んできてくれます。

Linuxの世界も同じです。あなたが文字で「ファイルを探して(find)」と入力すると、シェルという店員さんがその命令を解釈し、コンピュータの心臓部であるカーネルに伝えてくれます。その結果を、再びシェルが画面に表示してくれるのです。つまり、シェルは人間とコンピュータの「仲介役」なのです。

2. ターミナルとシェルの関係性とは?

2. ターミナルとシェルの関係性とは?
2. ターミナルとシェルの関係性とは?

「黒い画面」のことをよくターミナル(端末)と呼びますが、これとシェルも厳密には別物です。ターミナルは、文字を入力するための「入力欄」や「表示画面」という「箱」のようなものです。その箱の中で動いているプログラムが「シェル」です。

WindowsやMacでアイコンをマウスでクリックして操作する方法を「GUI(グラフィカル・ユーザー・インターフェース)」と呼びます。これに対し、文字だけで操作する方法を「CLI(コマンド・ライン・インターフェース)」と呼びます。プログラミングやサーバーの管理では、このCLIを使って操作するのが一般的です。

3. findコマンドとは?

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

findコマンドは、Linuxでファイルやディレクトリを探すための基本的なコマンドです。「どこに保存したかわからないファイルを見つけたい」「特定の名前をもつファイルを探したい」「最近更新されたファイルだけを探したい」といったときに非常に役立ちます。

Windowsの「検索ボックス」のようなイメージですが、findはターミナル(黒い画面)で使う文字だけの命令です。その代わり、とても速くて正確です。さらに、名前だけでなく、ファイルの種類やサイズ、作成された日時など、非常に細かい条件を指定して検索できるのが大きな特徴です。

4. 基本の書き方と実行例

4. 基本の書き方と実行例
4. 基本の書き方と実行例

findコマンドの基本的な書き方は、以下のようになります。まずはこの形を覚えましょう。


find [検索する場所] [検索条件]

たとえば、「今いる場所(カレントディレクトリ)」から、memo.txtという名前のファイルを探す場合は、以下のように入力します。


find . -name "memo.txt"
./Documents/memo.txt

ここで使われている記号や言葉を解説します。

  • find: 「探して!」という命令(コマンド名)。
  • .(ドット): 「今私がいる場所」という意味。Linuxでは今の場所をドット一つで表します。
  • -name: 「名前で探して」という条件(オプション)。
  • "memo.txt": 探したい具体的なファイル名。

5. 便利なオプション:ワイルドカードで曖昧検索

5. 便利なオプション:ワイルドカードで曖昧検索
5. 便利なオプション:ワイルドカードで曖昧検索

正確なファイル名が思い出せないこともありますよね。そんな時は、「ワイルドカード(*)」を使いましょう。アスタリスク * は「どんな文字が何文字入ってもいいよ」という意味です。

例えば、拡張子が .jpg(写真ファイル)のものをすべて探したい場合は、次のように書きます。


find . -name "*.jpg"
./Pictures/cat.jpg
./Pictures/travel/sea.jpg

このように、特定の文字が含まれるファイルを一気に探し出すことができます。初心者の方は、まずこの -name オプションと * の組み合わせを覚えるのがおすすめです。なお、名前の検索では大文字と小文字が区別されるので注意しましょう。区別せずに検索したい場合は -iname を使います。

6. ファイルの種類で絞り込む「-type」オプション

6. ファイルの種類で絞り込む「-type」オプション
6. ファイルの種類で絞り込む「-type」オプション

検索結果にフォルダ(ディレクトリ)は含めたくない、ファイルだけを表示したいという時には -type オプションを使います。Linuxではファイルもディレクトリも同じように扱われることが多いですが、明確に区別して探したい時に便利です。

  • -type f: 通常のファイルを探す
  • -type d: ディレクトリ(フォルダ)を探す

以下は、カレントディレクトリ内にある「config」という名前の「ディレクトリ」だけを探すコマンドです。


find . -name "config" -type d
./settings/config

もし -type d を付けなければ、config.txt という名前のファイルなども一緒に表示されてしまう可能性がありますが、このオプションを使えば目的のフォルダに最短でたどり着けます。

7. 管理者権限での検索:ルートディレクトリ全体を探す

7. 管理者権限での検索:ルートディレクトリ全体を探す
7. 管理者権限での検索:ルートディレクトリ全体を探す

自分のフォルダ以外、つまりシステム全体からファイルを探したい場合は、検索場所に /(ルートディレクトリ)を指定します。ルートディレクトリはパソコンの「一番上の階層」です。ただし、システムの中身を見るには管理者権限(root権限)が必要な場合があります。

初心者のうちはあまり使う機会がありませんが、システムの設定ファイルなどを探すときは、コマンドの先頭に sudo を付けて実行することがあります。ここでは管理者(ルートユーザー)として実行した時の様子を見てみましょう。


find /etc -name "ssh_config"
/etc/ssh/ssh_config

このように、システムの大事な設定が保存されている /etc フォルダの中からも、目的のファイルを一瞬で見つけ出すことができます。

8. 他のコマンドとの違い(lsコマンドやlocateコマンド)

8. 他のコマンドとの違い(lsコマンドやlocateコマンド)
8. 他のコマンドとの違い(lsコマンドやlocateコマンド)

ファイルを一覧表示するコマンドには ls があります。しかし、ls は「今見ている場所」の中身を表示するだけです。一方で find は、今いる場所から下の階層(サブディレクトリ)まで潜って、全ての場所を根こそぎ探しに行ってくれます。これが大きな違いです。

また、locate という検索コマンドもあります。これは事前に作られたデータベースからファイルを探すため、find よりもさらに高速です。しかし、新しく作成したばかりのファイルはデータベースに登録されていないため見つけることができません。対して find は「今、現在のリアルな状態」を直接ディスクに探しに行くため、いつでも最新の結果が得られます。確実性を求めるなら find コマンド一択です。

9. エラーを無視して見やすくするテクニック

9. エラーを無視して見やすくするテクニック
9. エラーを無視して見やすくするテクニック

広い範囲を検索すると、権限がないために「許可がありません(Permission denied)」というエラーメッセージがたくさん表示されてしまい、肝心の検索結果が埋もれてしまうことがあります。そんな時に便利な呪文があります。


find / -name "target.txt" 2>/dev/null
/home/user/target.txt

コマンドの最後にある 2>/dev/null は、「エラーメッセージだけをごみ箱に捨ててください」という意味の特殊な命令です。これを使うことで、権限エラーに邪魔されず、見つかったファイルだけを綺麗に表示させることができます。初心者を脱却するための第一歩として、この「おまじない」もセットで覚えておくと非常に役立ちます。難しい用語で「標準エラー出力のリダイレクト」と呼びますが、今は「エラーを隠す魔法」だと思っておけば大丈夫です。

カテゴリの一覧へ
新着記事
New1
AWS PrivateLink
AWS PrivateLinkのユースケースと業界別活用事例|セキュアな通信の決定版
New2
AWS PrivateLink
AWS PrivateLinkのログ取得とトラブル対応手順を完全ガイド!初心者でもわかるセキュアな接続確認方法
New3
ファイル・ディレクトリ構造
Linuxの/etcディレクトリとは?設定ファイルの役割を初心者向けに徹底解説
New4
AWS Lambda
AWS Lambdaでログを確認する方法を完全解説!CloudWatch Logsで初心者でも安心運用
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
Linux ディストリビューション
Linuxディストリビューションとは?OSとの関係や初心者におすすめの種類を徹底解説!
No.3
Java&Spring記事人気No3
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.4
Java&Spring記事人気No4
Linux ディストリビューション
Ubuntuとは何か?特徴と向いている用途を初心者向けに徹底解説!
No.5
Java&Spring記事人気No5
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.6
Java&Spring記事人気No6
AWS 基本
AWSのサービスのステータス確認方法(AWS Health Dashboard)
No.7
Java&Spring記事人気No7
RDS(データベース)
AWS RDSのセキュリティグループ設定方法を解説!初心者でも安心のクラウドデータベース対策
No.8
Java&Spring記事人気No8
RDS(データベース)
AWS RDSのメンテナンスウィンドウの設定方法を解説!初心者でもできるクラウドデータベースの管理