Linuxでファイルを検索するには?findコマンドの基本を解説

Linuxでファイルやディレクトリを検索する方法が知りたい
findコマンドの使い方について詳しく知りたい
ファイル名の一部を指定して一致したファイルのみを検索したい

Linuxで比較的規模の大きなシステムを開発することになると、設定ファイルやソースファイルなど膨大な数のファイルを扱うことになります。そんなとき、必要なファイルがどこに格納しているかわからなくなったり、特定のファイルのみを素早く検索したい場合があります。

Linuxでは指定したファイルやディレクトリを検索するときに便利なfindコマンドが用意されています。findコマンドを使用することで、さまざまな条件でファイルを検索することができます。

ここではLinux歴7年の著者が、Linuxのfindコマンドについて以下の内容を解説していきます。

  • findコマンドとは
  • findコマンドの基本的な使い方
  • findコマンドで使用できるオプション

Linuxのコマンドの中でもfindはよく使用するコマンドになりますので、この記事を読んでファイルを検索する方法についてしっかりと理解をしておきましょう!

目次

Linuxのfindコマンドとは

shutterstock_662074057

画像:shutter stock

findコマンドはファイルやディレクトリを検索するときによく使われます。findは以下のように記述します。

$ grep 検索文字列 ファイル名

引数にファイル名を指定することで、コマンドを実行するディレクトリ内の指定したファイル名を検索します。また、パスを指定することで、たとえばhomeディレクトリから指定したディレクトリの中にファイルが存在するか確認することができます。

次項ではfindコマンドの基本的な使い方を見ていきましょう。

findコマンドの基本的な使い方

ここでは実際にfindコマンドの使い方について解説します。

ファイル名を指定して検索

まずはファイルを検索する方法について解説します。たとえば、tmpディレクトリ内に「samurai.1txt」が存在するかを確認したい場合は以下のように記述します。

$ find samurai1.txt

image1

tmpディレクトリ内にsamurai1.txtが存在することがわかりますね!指定したファイルが存在しない場合は、以下のように「そのようなファイルやディレクトリはありません」と表示されます。

image2

ディレクトリを指定して検索

また、以下のように引数にディレクトリを指定することで、わざわざ対象のディレクトリに移動しなくてもfindによるファイル検索が可能です。

$ find /tmp/samurai1.txt

image3

findコマンドのオプション

findにはさまざまなオプションが用意されています。どのようなオプションが用意されているか調べる場合は、「man」コマンドを実行します。

$ man find

ここでは、findのオプションの中でもよく使用するものを紹介します。

-name(ファイル名の一部を指定して検索)

ファイル名の一部しかわからない場合は、「-name」オプションと*(ワイルドカード)を付加することで、指定したファイル名の一部を含むファイルを全て検索することが可能です。たとえば、「samurai」を含むファイル名を検索したい場合は、以下のように記述します。

$ find /tmp -name samurai*

image4

「samurai*」とすることでsamuraiを含むファイル名が検索できることがわかりますね。また、拡張子「.txt」のファイルが存在するか調べたいときは、以下のように記述すればOKです。

$ find /tmp -name *.txt

-type(タイプを指定する)

findコマンドは条件に一致したファイルやディレクトリ名が結果として表示されます。しかし、場合によってはファイル名のみ、ディレクトリ名のみの結果を表示させたい場合があります。

そのような場合はオプションの「type」を指定し、引数にf(ファイル)、d(ディレクトリ)を指定することでファイルのみ、ディレクトリのみを検索することができます。以下にsamuraiの名称がついたディレクトリを検索する方法を紹介します。

$ find ./ -name "samurai*" -type d

image5

このように-typeにd(ディレクトリ)を指定することで、ディレクトリのみ表示されることがわかりますね。また、findの後のパスの引数を「./」とすることで、どこのディレクトリからも検索することができます。

perm(パーミッションで検索)

指定したパーミッションのファイルが存在するか調べたい場合は「perm」オプションを使用します。たとえば、パーミッションが「666」のファイルが存在するか調べたい場合は、以下のように記述します。

$ find ./ -perm 666

image6

パーミッションが666のファイルが検索されました!

Linuxについてもっと知りたい方へ

そもそもLinuxについて、

実はなんとなくしか理解していないのでもっと詳しくしりたい
Linuxを効率よく学習する方法が知りたい

といった情報を知りたい方は、以下の記事も参考にしてみてくださいね!



Linux入門者に必要な知識をすべて解説!おすすめサイトや本もご紹介
更新日:2024年11月15日

まとめ

ここでは、findコマンドの基本的な使い方から、よく使われるオプションについて紹介しました。findコマンドは、Linuxのコマンドの中でも使用頻度が高く、ファイルやディレクトリが存在するか調べたい場合に非常に便利ですので、使い方についてはよく理解しておきましょう。

もしfindコマンドの使い方を忘れてしまったら、この記事を参考にしてくださいね。

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次