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おすすめ入門書7選
更新日 : 2020年7月30日

【完全保存版】Linux入門サイトおすすめ7選
更新日 : 2019年9月11日

まとめ

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

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

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

侍ブログ編集部

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。
サービスページはこちら
ツイッターはこちら
フェイスブックはこちら

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー