findコマンドの使い方|Linuxで効率的ファイルを検索する

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年3月)

✔このような方へ向けて書かれた記事となります

「findコマンドの使い方について知りたい」

「findコマンドでファイルを検索する方法ってどうやるの?」

「findコマンドでディレクトリも検索できるのだろうか?」

✔当記事を通じてお伝えすること

  • findコマンドの基本的な使い方と構文
  • findコマンドの実例
  • findコマンドのオプション

当記事では、findコマンドについてはもちろん、初心者にもわかりやすく使い方について詳しく解説しています。ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

findコマンドの基本

findコマンドの基本について解説していきます。

基本的な使い方を理解すれば、PC内のファイルが簡単に検索できるようになります。

  • findコマンドでできることとは?
  • findコマンドの基本構文
  • findコマンドで複数のファイルを探す方法とその実例

findコマンドでできることとは?

findコマンドを使えば、PC内のファイルをさまざまな条件で検索できます。

findコマンドで指定できる条件は以下のようなものです。

  • ファイル名
  • サイズ
  • 更新日時
  • 所有者
  • パーミッション

大量のファイルやディレクトリを効率的に検索するのはもちろん、検索結果を他のコマンドにパイプすることで、検索結果の加工まで可能になります。

例)/home/itc以下のファイル名が「itc.txt」であるファイルを検索

find /home/itc itc.txt

findコマンドで検索条件を指定すれば、目的のファイルやディレクトリを素早く見つけられます!

findコマンドの基本構文

findコマンドの基本構成は以下のとおり。

find 検索先フォルダ (オプション) ファイルに含まれる文字列

ホームディレクトリ以下で、「test」という文字列が含まれるファイルを検索します。

find ~ -name *test*

findコマンドは、Linuxシステムでファイルやディレクトリで検索をすれば、効率的な作業が可能となります。

findコマンドで複数のファイルを探す方法とその実例

アスタリスク「*」を使うことで、該当するファイルを複数見つけられます。

find ファイルパス -name *.ファイル拡張子

以下が実行例です。

find ~/dev/ -name *.txt

findコマンドで、指定されたディレクトリ以下のファイルを再帰的に検索し、条件に合致するファイルを見つけられます。

findコマンドのオプションとその実例

findコマンドのオプションとその実例について解説していきます。

オプションを理解することで検索の精度を高められます

実例付きでご覧ください。

  • name:ファイル名を指定
  • type:ファイルの種類を指定
  • size:ファイルサイズを指定
  • mtime:ファイルの変更日時を指定
  • exec:検索結果に対してコマンドを実行
  • print:検索結果を表示
  • maxdepth:検索するディレクトリの深さを制限する
  • mindepth:検索を開始するディレクトリの深さを指定
  • perm:ファイルのパーミッションを指定
  • user:ファイルの所有者を指定
  • group:ファイルのグループを指定
  • iname:大文字小文字を区別せずにファイル名を指定
  • regex:正規表現を使用してファイル名を指定

name:ファイル名を指定

findコマンド-nameオプションを使えば、指定したファイル名に一致するファイルを検索できるのです。

例えば、以下のようなコマンドを実行することで、現在のディレクトリ内にある「itc.txt」というファイルを検索することができます。

find . -name itc.txt

nameオプションを使用することで、特定のファイル名を検索することができます。

ただし、大文字と小文字を区別するためには、-inameオプションを使用する必要があります。

type:ファイルの種類を指定

findコマンドの-typeオプションを使うと、特定のファイルの種類を指定し、検索対象を限定できます。

例としては以下のとおり。

  • -type f:通常のファイルのみ検索
  • -type d:ディレクトリのみ検索

このオプションを使用することで、検索対象を限定することができ、検索結果をより正確に取得できます。

検索対象が大量にある場合など、検索時間を短縮することがメリットといえるでしょう。

size:ファイルサイズを指定

findコマンドのオプション -sizeを使うと、特定のファイルサイズを持つファイルを検索できます。

大きすぎるまたは小さすぎるファイルを見つけるのに役立ちます。

例)100MBのファイルを検索。

find ~/itc -size 100M

このコマンドは、ホーム > itcディレクトリ内の100MBのファイルをすべて検索します。

mtime:ファイルの変更日時を指定

findコマンドの-mtimeオプションでは、指定した日数以内に変更されたファイルを検索できます。

例えば、以下のようなコマンドを実行することで、3日以内に変更されたファイルを検索可能。

find ~/Documents/ -mtime -3

このコマンドでは、ホーム > ドキュメントディレクトリ以下のファイルのうち、3日以内に変更されたものを検索しています。

exec:検索結果に対してコマンドを実行

findコマンドの-execオプションを使うと、検索結果に対して指定したコマンドを実行できます。

例えば以下のようなコマンドで、検索されたファイルを削除できます。

find ~/Documents/test/ -name ""*.txt"" -exec rm {} \;

このコマンドは、ホーム > ドキュメント > testディレクトリ以下のすべての.txtファイルを検索し、見つけたファイルを削除します。

コマンド内の{ }は、検索結果のファイル名に置き換えられます!

ただしコマンドを実行する前に、必ず検索結果を確認し、誤って重要なファイルを削除しないように注意してください。

print:検索結果を表示

findコマンドの-printオプションは、見つけたファイルやディレクトリのパスを表示できるもの。

パスを見つけることで、必要に応じてほかのコマンドを実行できるのです。

例えば、次のコマンドを実行すると、現在のディレクトリ以下のすべての.jpgファイルのパスが表示されます。

find . -name *.jpg -print

検索結果を表示することで、ユーザーは必要なファイルやディレクトリを見つけることができます。

maxdepth:検索するディレクトリの深さを指定

findコマンドの-maxdepthオプションは、検索するディレクトリの深さを制限するために使用されます。

指定されたディレクトリ以下をすべて検索するのではなく、指定された深さまでしか検索しないよう指定できるのです。

例えば、以下をのように指定することで、同じコマンドでもどこまで検索するかが異なります。

  • -maxdepth 1:指定されたディレクトリの直下のファイルとディレクトリのみ
  • -maxdepth 0:指定されたディレクトリのみ

maxdepthオプションを入れる場所は、ほかのオプションよりも前にすることを覚えておきましょう。

mindepth:検索を開始するディレクトリの深さを指定

findコマンドのオプションである-mindepthは、検索を開始するディレクトリの深さを指定するもの。

指定された深さよりも浅い階層のディレクトリを検索から除外できます。

例えば、以下のコマンドを使用すると、/home/ディレクトリ以下の2階層目以降のディレクトリ内のすべての.txtファイルを検索することができます。

find /home/ -mindepth 2 -type f -name *.txt

特定の深さのディレクトリ内のファイルを検索する必要がある場合は、このオプションを使用することをおすすめします。

perm:ファイルのパーミッションを指定

findコマンドの-permは、ファイルのパーミッションによりファイルを検索するものです。

このオプションを使用することで、指定したパーミッションに一致するファイルを見つけられます。

  • -perm 644:読み書きが所有者にのみ許可&読み取りのみグループとその他ユーザーに許可されたファイルを検索
  • -perm /o+x:他のユーザーに実行権限が許可されたファイルを検索

user:ファイルの所有者を指定

findコマンドの-userオプションは、指定したユーザーが所有するファイルを検索できるもの。

このオプションを使うことで、特定のユーザーが作成したファイルを見つけたり、セキュリティ上の理由から特定のユーザーがアクセスできるファイルを見つけたりすることができるのです。

例えば、以下のコマンドを実行することで、ユーザー名が「yulikepython」であるファイルを検索します。

find /home -user yulikepython

-userオプションは、企業などのPCで、特定のユーザーが所有するファイルを検索するために非常に便利なオプションといえるでしょう。

group:ファイルのグループを指定

findコマンドで-groupオプションを使うと、特定のグループに属するファイルを検索できます。

userオプションのグループ版と考えれば良いでしょう。

例えば、次のようなコマンドを使用することで、グループ名が「itcgroup」であるファイルを検索することができます。

find /home -group staff

groupオプションは、特定のグループに属するファイルを素早く見つけることができることを覚えて起きましょう。

iname:大文字小文字を区別せずにファイル名を指定

findコマンドのオプションのひとつである-inameは、大文字小文字を区別せずにファイル名を指定できるもの。

nameオプションの際、大文字小文字を区別したくないときに使います。

出力したい検索結果によっては、nameオプションではなく、inameオプションが適している場面があるはずです。

regex:正規表現を使用してファイル名を指定

findコマンドで-regexオプションを使うと、正規表現を使用してファイル名を指定できます。

正規表現を使用することで、より柔軟な検索が可能となるのです。

例えば、次のようなコマンドを使用することで、ファイル名が「programming」で始まるファイルを検索することができます。

$ find . -regex ./programming.*

このコマンドでは、現在のディレクトリから始まり、正規表現「.*」は、任意の文字列を表します。

このように、-regexオプションを使用することで、より高度なファイル検索が可能になるのです。

まとめ:findコマンドで、効率よくファイル検索をおこなおう

当記事の内容をまとめます。

  • findコマンドは、PC内を条件にもとづいて検索できるコマンド
  • findコマンドのオプションを使いこなせば、さまざまな検索が可能になる
  • findコマンドのオプションには順番もあることを覚えておこう

findコマンドは、LinuxOS内を自由に検索できるもの。

Linuxはシンプルですが、ファイル構造が深くなっていく特徴があります。

うまく活用すれば、作業効率を上げられるでしょう。

タイトルとURLをコピーしました