ファイルなどを検索する!findコマンドの詳細まとめ【Linuxコマンド集】

findコマンド
  • このエントリーをはてなブックマークに追加
  • Pocket

findはファイルやディレクトリを検索するコマンドだ。

作成したファイルがどこにあるかわからなくなった時はもちろん、Linuxを利用する上で設定ファイルを探すということはよくあることだ。

このページでは、findコマンドの基本的な使用方法の解説に併せ、便利な使い方も紹介する。

ぜひ参考にしてほしい。

目次

findコマンドの基本

findコマンドの基本動作

findは、その通り検索のコマンドだ。ファイルやディレクトリを検索する。

基本的な書式は次のようになる。

$ find ファイル名

findに続き、検索するファイル名を指定する。

例えば、workディレクトリ内のtest01.datを検索する場合は、次のようになる。

$ find ./work/test01.dat

findコマンドの基本

workディレクトリ内のtest01.datが検索された。

上記findコマンドを試すなら下のコマンドをLinux上で実行すればすぐに再現可能だ。

検索するファイルがなければエラーが表示される。

workディレクトリ内のtest10.datは存在しないが、検索してみる。

$ find ./work/test10.dat

findコマンド エラー

「そのようなファイルやディレクトリはありません」とエラーが表示された。

findコマンドの便利なオプションたち

findコマンドの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -name

ワイルドカードを使用して、ファイルやディレクトリ名の一部のみ指定した検索ができる。

オプション -atime

任意の日数にアクセスされたファイルやディレクトリを検索する。

オプション -mtime

任意の日数に更新されたファイルやディレクトリを検索する。

オプション -amin

任意の分数にアクセスされたファイルやディレクトリを検索する。

オプション -mmin

任意の分数に更新されたファイルやディレクトリを検索する。

オプション -anewer

任意のファイルの更新日時よりも後にアクセスしたファイルやディレクトリを検索する。

オプション -newer

任意のファイルの更新日時よりも後に変更したファイルやディレクトリを検索する。

オプション -empty

ファイル容量が0のファイルやディレクトリを対象とし検索する。

オプション -size

ファイル容量を指定し検索する。

オプション -type f

ファイルのみを対象とし検索する。

オプション -type d

ディレクトリを対象とし検索する。

オプション -perm

パーミッションで検索する。

オプション -and

複数の条件を使って、すべての条件に当てはまるファイルやディレクトリを検索する。

オプション -or

複数の条件を使って、いずれかの条件に当てはまるファイルやディレクトリを検索する。

オプション -not

条件に当てはまらないファイルやディレクトリを検索する

オプション -exec

検索結果に対してコマンドを実行する。

 

かなり長くなってしまったが、それぞれ詳細を紹介していく。

-nameオプション:ワイルドカードを使用して、ファイルやディレクトリ名の一部のみを指定し検索する

ファイル名やディレクトリ名が一部しかわからない場合でもワイルドカードを使って検索できる。

ワイルドカードは直前に「\」でエスケープしないとエラーや想定した動作にならない。

$ find 検索先 -name ファイル名

workディレクトリ内の拡張子.datのファイルを検索する場合は、次のとおりだ。

$ find work -name \*.dat

find -nameオプション

拡張子.datのファイルのみ表示された。

-nameオプションを記述せずに、

$ find ./work/ *.dat

と記述することで、同じ動作をすることもできる。

-atimeオプション:任意の日数にアクセスされたファイルやディレクトリを検索する

指定した日にアクセスしたファイルやディレクトリを検索できるオプションだ。

日数は、今日が0、昨日が1である。

$ find 検索先 -atime 日数

今日アクセスしたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -atime 0

find -atimeオプション

今日アクセスされたファイルが表示された。

 

任意の日数以内にアクセスされたファイルやディレクトリをすべて表示したい場合は、日数に-を付ける。

3日以内にアクセスされたファイルやディレクトリを検索する場合は、次のとおりだ。

$ find ./work/ -atime -3

find -atimeオプション 2

今日から3日以内にアクセスされたファイルが表示された。

任意の日数前までにアクセスされたファイルやディレクトリをすべて表示したい場合は、日数に+を付ける。

3日よりも前にアクセスされたファイルやディレクトリを検索する場合は、次のとおりだ。

$ find ./work/ -atime +3

find -atime 3

今日から3日よりも前にアクセスされたファイルが表示された。

-mtimeオプション:任意の日数に更新されたファイルやディレクトリを検索する。

指定した日に変更を行ったファイルやディレクトリを検索できるオプションだ。

日数は、今日が0、昨日が1である。

$ find -mtime 日数

今日変更を行ったファイルを検索する場合は、次のとおりだ。

$ find -mtime 0

find -mtimeオプション

今日変更されたファイルが表示された。

任意の日数以内に変更を行ったファイルをすべて表示したい場合は、日数に-を付ける。

10日以内に変更されたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -mtime -10

find -mtimeオプション 2

10日以内に変更されたファイルが表示された。

任意の日数前までに変更を行ったファイルをすべて表示したい場合は、日数に+を付ける。

20日よりも前に変更されたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -mtime +20

find -mtimeオプション3

20日より前に変更されたファイルが表示された。

-aminオプション:任意の分数以前にアクセスされたファイルやディレクトリを検索する

指定した時間にアクセスしたファイルやディレクトリを検索できるオプションだ。

$ find 検索先 -amin 分数

直前にアクセスしたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -amin 1

find -aminオプション

直前にアクセスされたファイルが表示された。

任意の時間以内にアクセスされたファイルをすべて表示したい場合は、分に-を付ける。

25分以内にアクセスされたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -amin -25

find -aminオプション

今から25分以内にアクセスされたファイルが表示された。

任意の時間の前までにアクセスされたファイルをすべて表示したい場合は、分に+を付ける。

25分よりも前にアクセスされたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -amin +25

find -aminオプション

今から25分よりも前にアクセスされたファイルが表示された。

-mminオプション:任意の時間に更新されたファイルやディレクトリを検索する。

指定した時間に変更を行ったファイルの場所を検索できるオプションだ。

$ find -mtime 分数

今変更を行ったファイルを検索する場合は、次のとおりだ。

$ find -mmin 1

find -mminオプション

今変更されたファイルが表示された。

任意の時間までに変更を行ったファイルをすべて表示したい場合は、分数に-を付ける。

12時間以内に変更されたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -mmin -720

find -mminオプション

12時間(720分)以内に変更されたファイルが表示された。

任意の時間までに変更を行ったファイルをすべて表示したい場合は、分数に+を付ける。

20時間よりも前に変更されたファイルを検索する場合は、次のとおりだ。

$ find ./work/ -mmin +1200

find -mminオプション 3

20時間(1200分)より前に変更されたファイルが表示された。

-anewerオプション:任意のファイルの更新日時よりも後にアクセスしたファイルやディレクトリを検索する。

あるファイルの更新日時と比べて、アクセスした時間がそれ以降のファイルを検索する。

$ find 検査元 -anewer 元ファイル名

workディレクトリ内のtest02.datの変更日時よりも後にアクセスしたworkディレクトリ内のファイルを検索する場合は、次のとおりだ。

$ find ./work/ -anewer ./work/test02.dat

find -anewerオプション

-newerオプション:任意のファイルの更新日時よりも後に更新したファイルやディレクトリを検索する

あるファイルの更新日時と比べて、更新した時間がそれ以降のファイルを検索する。

$ find 検査元 -newer 元ファイル名

workディレクトリ内のtest03.datの変更日時よりも後に更新したworkディレクトリ内のファイルを検索する場合は、次のとおりだ。

$ find ./work/ -newer ./work/test03.dat

find -newerオプション

-emptyオプション:ファイルやディレクトリの容量がないものを検索する

空のものを検索するコマンドだ。

$ find 検査元 -empty

workディレクトリ内のファイル容量が0のものを検索する場合は、次のとおりだ。

$ find ./work/ -empty

find -empty

-sizeオプション:ファイルの容量を指定し検索する

ファイルの容量を指定して検索するコマンドだ。

初期設定では、ファイル容量が指定したものを検索する。

指定したファイル容量以上のものを検索する場合はファイル容量の前に+を、以下の場合はマイナスを付与する。

ファイル容量の後ろにcを付与すると単位がByteとなり、kを付与するとkByteとなる。

$ find 検索元 -size ファイル容量

workディレクトリ内のファイル容量が6byte以下のファイルを検索する場合は、次のとおりだ。

$ find ./work/ -size -6c

find -sizeオプション

-type f オプション:ファイルのみを対象とし検索する

検索対象をファイルのみに限定して検索するコマンドだ。検索対象のタイプに「file」を指定する形になる。

$ find ファイル名 -type f

workディレクトリ内のファイル名に01が含まれるファイルのみを検索する場合は、次のとおりだ。

$ find ./work/*01* -type f

find -type fオプション

-type d オプション:ディレクトリを対象とし検索する

上の「-type f」と同じパターンだ。dを指定することで、検索対象をディレクトリのみに限定して検索するコマンドになる。

$ find ディレクトリ名 -type d

workディレクトリ内のディレクトリ名に01が含まれるディレクトリのみを検索する場合は、次のとおりだ。

$ find ./work/*01* -type d

find -type d オプション

-permオプション:パーミッションで検索する

ある特定のパーミッションで検索するコマンドだ。

$ find 検索元 -perm パーミッション

または

$ find 検索元 -perm -対象者=アクセス権

対象者は、所有者がu、グループがg、その他のユーザーがo、全対象者がaとなる。

アクセス権は、読み込み権限がr、書き込み権限がw、実行権限がxとなる。

workディレクトリ内のパーミッションが664を検索する場合は、次のとおりだ。

$ find ./work/ -perm 664

find -permオプション

アクセス権限が664(-rw-rw-r--)のものが検索された。

workディレクトリ内の所有者が実行権限を持つものを検索する場合は、次のとおりだ。

$ find ./work/ -u=x

find -permオプション

所有者に実行権限が設定されている(アクセス権限が-rwxrw-rw-)のものが検索された。

-andオプション:複数の条件を使って、すべての条件に当てはまるファイルやディレクトリを検索する

複数の検索条件を使って、すべての条件が満たしているファイルやディレクトリのみを検索するコマンドだ。

$ find 検索元 検索条件1 -and 検索条件2

workディレクトリ内の名称に2が入っていて、なおかつパーミッションが664のものを検索する場合は、次のとおりだ。

$ find ./work/ -name \*2\* -and -perm 664

find -andオプション

ファイル名称に2が入っていて、なおかつ、アクセス権限が664(-rw-rw-r--)のものが検索された。

-orオプション:複数の条件を使って、いずれかの条件に当てはまるファイルやディレクトリを検索する

複数の検索条件を使って、いずれかの条件を満たしているファイルやディレクトリを検索するコマンドだ。

$ find 検索元 検索条件1 -or 検索条件2

workディレクトリ内の名称に4が入っている、またはパーミッションが766のものを検索する場合は、次のとおりだ。

$ find ./work/ -name \*4\* -or -perm 766

find -orオプション

ファイル名称に4が入っている、または、アクセス権限が766(-rwxrw-rw-)のものが検索された。

-notオプション:条件に当てはまらないファイルやディレクトリを検索する

検索条件に当てはまらないファイルやディレクトリを検索するコマンドだ。

$ find -not 検索元 検索条件

workディレクトリ内の所有者に実行権限のないものを検索する場合は、次のとおりだ。

$ find ./work/ -not -perm -u=x

find -notオプション

workディレクトリ内の所有者に実行権限があるものは検索されず、それ以外が検索された。

-execオプション:検索結果に対してコマンドを実行する

検索した結果に対して、何らかのアクションを自動で実行させることができるオプションだ。

$ find 検索元 検索ファイル名 -exec 実行するコマンド \;

workディレクトリ内の拡張子.datを探し、圧縮ファイルtest.zipに追加していく場合は、次のとおりだ。

*は\でエスケープする。また、対象となる全ファイルという意味で{}を記述している。

$ find ./work/ -name \*.dat -exec zip ./work/test.zip {}  \;

find -execオプション

workディレクトリ内の拡張子.datのファイルがtest.zipに次々と圧縮されている。

workディレクトリ内のパーミッションが644のものを探し、パーミッションを666に変更する場合は、次のとおりだ。

$ find ./work/ -perm 664 -exec chmod 666 {}  \;

find -execオプション

workディレクトリ内のパーミッションが644のファイルのパーミッションが666に変更された。

findコマンドと類似のコマンド群

最後にfindコマンドに関連して、基本的なファイル検索のコマンドも紹介しておく

grepコマンド

ファイルの中のワードで検索を行うコマンドだ。こちらもLinuxを使う上で必須コマンドになっている。

まとめ

findで検索できる形式は、名前、名前の一部、更新日時、ファイルサイズなどがある。検索した結果に対しては、他のコマンドを組み合わせることで何かの処理をすることも可能だ。

CMSをLinuxサーバーにインストールする作業の中では、ある条件のファイルのみにパーミッションを設定するような作業がよくある。そのような時はこのfindコマンドを使うことで効率がよくなるだろう。

findコマンドは基本のコマンドでありながら、応用性も高いコマンドなので、この機会にぜひ把握してほしいコマンドだ。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメント

コメントを残す

*