ファイルを検索するコマンド!linux findコマンドのオプションとは?

linuxでファイルを検索するfindコマンドについて知りたい方いらっしゃるのではないでしょうか。

本記事では、linuxのfindコマンドの使い方についてわかりやすく解説しています。

linux初心者の方やfindコマンドについて知りたい方はぜひ、参考にしてみてください。

この記事でわかること
・findコマンドとは
・findコマンドの使い方
・findコマンドオプション・判別式・演算子・アクション


findコマンドとは

findコマンドとは、linuxでファイルやディレクトリを検索したいときに利用されます。

検索対象としては、単体で検索できるのはもちろん複数のファイルやディレクトリでも検索することができます。

また、findコマンドはgrepコマンドと組み合わせて使われることが多いです。

findコマンドの使い方については、この後詳しく解説していきます。

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

findコマンドには、多くのオプションや識別式などがあります。

その中で、基本的なfindコマンドの使い方は以下になります。

基本的なfindコマンドの使い方
find ファイル名(ディレクトリ名)

上記のような書式でファイルやディレクトリを検索することができます。

ですが、検索結果を名前の順番などで出力することができないので注意が必要です。

findコマンドのオプション・判別式・演算子

findコマンドでよく使う判別式・演算子の使い方について解説します。

オプション説明
-nameファイルやディレクトリ名を検索する
-atime任意の日数にアクセスされたファイルやディレクトリを検索する
-mtime任意の日数に更新されたファイルやディレクトリを検索する
-emptyファイルやディレクトリの容量がないものを検索する
-type fファイルのみを対象として検索する
-type dディレクトリのみを対象として検索する
-permパーミッションで検索する
-and複数の条件を使い、すべての条件に当てはまるファイルやディレクトリを検索する
-or複数の条件を使い、いずれかの条件に当てはまるファイルやディレクトリを検索する
-not条件に当てはまらないファイルやディレクトリを検索する
-exec検索結果に対してコマンドを実行する

-name・・・ファイルやディレクトリ名を検索する

ファイル名やディレクトリ名を指定して検索したい場合の方法です。

書式は以下のようになります。

書式
find 検索先 -name ファイル名(ディレクトリ名)

例えば、/tmp配下のtestというファイルを検索したい場合には以下のようになります。

find /tmp/ -name test

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

ファイルやディレクトリにアクセスした日は覚えているが、ファイル名などがわからない場合に使用します。

書式は以下のようになります。

書式
find 検索先 -atime 日数

例えば、/tmp配下で今日アクセスしたファイルやディレクトリを知りたい場合には、以下のようになります。
今日の場合0、昨日の場合1になります。

find /tmp/ -atime 0

2日以内にアクセスしたファイルやディレクトリを検索したい場合は、以下のようになります。

find /tmp/ -atime -2

2日より前にアクセスされたファイルやディレクトリを検索する場合は、以下のようになります。

find /tmp/ -atime +2

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

ファイルの更新を行った日がわかる場合に使用します。

書式は以下のようになります。

書式
find 検索先 -mtime 日数

例えば、今日更新したファイルのみを検索したい場合は、以下のようになります。
今日の場合0、昨日の場合1になります。

find -mtime 0

-empty・・・ファイルやディレクトリの容量がないものを検索する

容量がないファイルやディレクトリを検索したい場合に使用します。

書式は以下のようになります。

書式
find 検索先 -empty

例えば、/tmpの容量がないファイルやディレクトリを検索したい場合は、以下のようになります。

find /tmp/ -empty

-type f・・・ファイルのみを対象として検索する

ディレクトリは検索せず、ファイルのみを検索したい場合に使用します。

書式は以下のようにになります。

書式
find ファイル名 -type f

例えば、/tmp配下にある末尾に.logと就いているファイルのみを検索したい場合は以下のようになります。

find /tmp/*.log -type f

-type d・・・ディレクトリのみを対象として検索する

ファイルは検索せず、ディレクトリのみ検索する際に使用します。

書式は以下のようになります。

書式
find ディレクトリ名 -type d

例えば、/tmp配下のtest~ディレクトリを検索したい場合は、以下のようになります。

find /tmp/test* -type d

-perm・・・パーミッションで検索する

指定したパーミッションのみを検索する際に使用します。

書式は以下のようになります。

書式
find 検索先 -perm パーミッション

例えば、/tmp配下の644のパーミッションのみを検索したい場合は以下のようになります。

find /tmp -perm 644

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

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

書式は以下のようになります。

書式
find 検索先 検索条件1 -and 検索条件2

例えば、/tmp配下のtestという名前でパーミッションが664のファイルやディレクトリを検索したい場合は以下のようになります。

find /tmp/ -name test -and -perm 664

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

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

書式は以下のようになります。

書式
find 検索先 検索条件1 -or 検索条件2

例えば、/tmp配下のtestという名前またはパーミッションが664のファイルやディレクトリを検索したい場合は以下のようになります。

find /tmp/ -name test -or -perm 664

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

複数の検索条件を使用し、条件に当てはまらないファイルやディレクトリを検索する場合に使用します。

書式は以下のようになります。

書式
find 検索先 -not 検索条件2

例えば、パーミッションが664のファイルやディレクトリでないものを検索したい場合は以下のようになります。

find /tmp/ -not -perm 664

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

検索したファイルやディレクトリにコマンドを実行したい場合に使用します。

書式は以下のようになります。

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

例えば、/tmp配下にあるtestファイルを検索してファイルの中身を参照する場合には以下のようになります。

find /tmp -name test -exec cat /tmp/test \;

findコマンド 類似コマンド

linux findコマンドと似ているコマンドについて紹介します。

場面によってどちらのコマンドを使用するのか決めましょう。

grepコマンド

grepコマンドはファイル内でワードを検索するコマンドになります。

そのため、findコマンドでファイルを検索した上で、ファイル内のワードを調べることができます。

まとめ

いかがでしたか。

本記事では、ファイルを検索するlinux findコマンドについて詳しく解説しました。

linux初心者の方やfindコマンドについて知りたい方はぜひ、参考にしてみてください。

【初心者エンジニア必見!エンジニアが持っておきたい持ち物・ガジェット一覧】

エンジニアにおすすめの持ち物とガジェットを一覧でまとめています。

利用することで作業効率を上げることのできる物を厳選して紹介しているため、エンジニアの方やリモート勤務の方は特に参考にしてみてください。




ABOUT US
はなちゃん
25歳インフラエンジニア5年目のはなちゃんです。 未経験からインフラエンジニアになった経験を生かしてインフラエンジニアの基礎的部分、linux、awsを中心にブログを書いています。 転職サイトを利用した転職経験もあります。 ■保有資格:LPIC lenel3・ITパスポート・AWS SAA ■業務経験:インフラ業務の設計~運用まで