2019.12.13

findコマンドとは?Linuxコマンドでファイルやディレクトリを検索する方法をご紹介

find1

皆さんこんにちは!
Linuxのコマンドを使いこなしていますか?

Linuxには便利なコマンドが多数存在します。
サーバー管理に欠かせないコマンドの中から今回は、find(ファインド)コマンドをご紹介いたします。

目次
findコマンドとは?
findコマンドの使い方
findコマンドを使ってみよう!
複数ファイルを同時に検索する
findコマンドの主なオプションたち
ファイルの名前が指定一致しているファイルを検索する【-name オプション】
指定した日数以前に更新されたファイルを検索する【-mtime オプション】
検索対象のファイルタイプを指定して検索する【-type オプション】
まとめ

findコマンドとは?

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

findコマンドでは、検索対象として複数のファイルやディレクトリが使用できます。

また、パイプ(|)を利用しgrepコマンドなどのコマンドと組み合わせて利用されることが多いコマンドです。

それでは、findコマンドの使い方について具体的にみていきましょう!

findコマンドの使い方

findコマンドの基本書式

findコマンドの基本書式は、以下の通りです。

$find 検索する場所  [オプション]  検索ファイル名

このような記述のみで指定した条件に各当するファイルやディレクトリを簡単に検索することができます。
ただし、検索結果を名前順等に出力はしてくれないため注意が必要です。

findコマンドを使ってみよう!

それでは、findコマンドを使用してみましょう!

今回は「find_test」というディレクトリの中から「test_31.txt」というファイルを探したいと思います。

$ pwd
/home/test_user/find_test
$ ls
find_test100.txt  find_test22.txt   find_test3.txt   find_test5.txt
find_test103.txt  find_test244.txt  find_test41.txt  find_test62.txt
find_test12.txt   find_test2.txt    find_test42.txt  find_test66.txt
find_test163.txt  find_test300.txt  find_test44.txt  find_test7.txt
find_test194.txt  find_test31.txt   find_test51.txt  find_test83.txt
find_test21.txt   find_test34.txt   find_test53.txt  find_test3.txt

しかし、ファイルが少し多く目で探すと時間がかかりそうですね。
findコマンドはこういったときに役立ちます。

それでは、findコマンドを利用して「find_test31.txt」というファイルを探してみましょう!

実行結果
$ find find_test31.txt
find_test31.txt

ファイルが見つかりました!!
では、逆に存在しないファイルを検索するとどうなるのかをみてみましょう。

先ほどと同じディレクトリ「find_test」から「find_test404.txt」というファイルを探してみます。

実行結果
$ find find_test404.txt
find: `find_test404.txt': No such file or directory

このようにディレクトリ直下にファイルが多数ある場合に存在の有無が確かめられ、非常に便利ですね!

Findコマンドには、他にも便利な使い方があるので、もう少しみていきましょう。

複数ファイルを同時に検索する

ファイル名の末尾にあるナンバリングだけが違うファイル郡の中から、一定の条件のファイルを検索したい場合などもあるのではないでしょうか。

そのような場合はぜひ、findコマンドと一緒にワイルドカード(*)を利用してください!!

使い方は、非常に簡単ですので実例を用いてご紹介します。
先ほどと同じディレクトリ「find_test」から末尾のナンバリングが「1」から始まるファイルを探してみましょう。

実行結果
$ find find_test1*
find_test100.txt
find_test103.txt
find_test12.txt
find_test163.txt
find_test194.txt

かなり簡単に末尾が「1」から始まるファイルを検索できました。
このようなfindコマンドの使用方法を覚えればファイルを探す際にスピードアップ間違いなしですね!!

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

オプション 説明
-name ファイルの名前が指定一致しているファイルを検索する
-mtime 日数 指定した日数以前に更新されたファイルを検索する
-type 検索対象のファイルタイプを指定して検索する
-path ファイルのパスが指定一致しているファイルを検索する
-iname -nameオプションと同様だが、文字の大小を区別しない
-ipath -pathオプションと同様だが、文字の大小を区別しない
-atime 日数 指定した日数以前にアクセスされたファイルを検索する
-a 複数条件を組み合わせて検索する

ここからいくつか具体的に使用法をみてみましょう!

ファイルの名前が指定一致しているファイルを検索する【-name オプション】

この「-name」オプションが一番使われているオプションといえるのではないでしょうか。
具体的な使い方としては、名前の文字列をキーにファイルやディレクトリを検索したいときに利用します。

それでは、先ほど使ったファイル郡で使用例をみてみましょう。

$ pwd
/home/test_user/find_test
$ ls
find_test100.txt  find_test22.txt   find_test3.txt   find_test5.txt
find_test103.txt  find_test244.txt  find_test41.txt  find_test62.txt
find_test12.txt   find_test2.txt    find_test42.txt  find_test66.txt
find_test163.txt  find_test300.txt  find_test44.txt  find_test7.txt
find_test194.txt  find_test31.txt   find_test51.txt  find_test83.txt
find_test21.txt   find_test34.txt   find_test53.txt  find_test3.txt

それでは、他のディレクトリから上記のファイルを検索してみましょう。
さらに末尾のナンバリングが「2」から始まるように条件を指定したいと思います。

実行結果
$ find /home/ -name find_test2*
/home/test_user/find_test/find_test2.txt
/home/test_user/find_test/find_test22.txt
/home/test_user/find_test/find_test21.txt
/home/test_user/find_test/find_test244.txt

ファイルを探してくれるばかりか、そのファイルのパス(場所)まで知らせてくれていますね!
かなり便利な使い方ですね!!

指定した日数以前に更新されたファイルを検索する【-mtime オプション】

こちらの検索条件も非常によく使用されているオプションです。
このオプションを利用する際に気を付けないといけない点は、指定日数「より前に更新されたファイル」と「以内に更新されたファイル」で検索する方法が違うという点です。

説明 使用方法
~日より前に更新されたファイルを検索する場合 「+」を 指定する日数の前に入れる
~日以内に更新されたファイル 「-」を 指定する日数の前に入れる

それでは、使用方法をみてみましょう。
今回は、1日以内に更新されたファイルを検索したいと思います。

実行結果
$ find -mtime -1
/home/test_user/find_test/find_test5.txt
/home/test_user/find_test/find_test2.txt
/home/test_user/find_test/find_test66.txt
/home/test_user/find_test/find_test22.txt

こちらも覚えておくとサーバー管理の際にかなり役立つオプションです!
ぜひ、押さえたいところですね。

検索対象のファイルタイプを指定して検索する【-type オプション】

「-name」オプションなどで指定した場合、ファイルを検索したいのに該当する名前のファイルだけではなく、ディレクトリも検索されてしまいます。
このような方法仕様では困ってしまいます。せめてファイルを検索するのか、ディレクトリを検索するのかくらいは指定したいですよね!

そのようなときに役立つのが「-type」オプションです。

オプション 使用法
-type f ファイルを検索するとき
-type d ディレクトリを検索するとき

では、利用してみましょう。
今回は、ファイルを除外してディレクトリを検索したいと思います。

実行結果
$ find /home/ -name find_test* type d
/home/test_user/find_test

これで、一通り「findコマンド」の説明を終えました。
ぜひ、明日から「findコマンド」を使ってみてください!!

まとめ

今回は、findコマンドについてご紹介させていただきました。
findコマンドには、さまざまなオプションがあり、使いこなすことでかなり便利にサーバーを管理できるようになりそうですね。

今後もLinuxコマンドをご紹介していく予定ですので、ぜひご覧くださいね!

コマンド集
文字列を検索する「grepコマンド」
ファイルの中身を確認する「catコマンド」
ファイルの中身を並び替える「sortコマンド」

それでは、皆さまよりよいサーバーライフをお過ごしください!!

サーバー運用のためにコマンドを覚えることから解放されたい方へ

コマンドなしでサーバー運用できるplesk(プレスク)がオススメです

この記事を書いた人

髙松 GMOグローバルサイン・HD

2019年に総合職として新卒入社しました。
これから自分のできることを探していきたいと思っています。

プライベートでは、野球をしたり、Pythonの勉強をしたりしています。
将来は、クラウドアカデミー編集長の田(でん)さんの弟子になりたいです。

GMOクラウドアカデミーYouTubeチャンネルはこちらから

アカデミー用バナー

メルマガ会員募集中!

アカデミーの最新情報や会員限定のお得な情報をお届けします。

メルマガ登録はこちら