スライドショー

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選
更新日 : 2018年10月26日

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

まとめ

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

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

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

侍ブログ編集部

侍ブログ編集部

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

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説