Linux入門

Linuxでファイル検索をする方法は?【findコマンドの使い方を詳しく解説!】

こんにちは、インフラエンジニアのryuです。

今回は、Linuxでファイル検索する方法を解説します。ファイル検索で使用するコマンドは”find”です。findコマンドの使い方や良く使うオプションなどを紹介します。Linuxの初心者の方向けに分かりやすく解説します。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

Linuxでファイル検索をする方法は?

Linuxでファイル検索をする方法は?

まず、結論から言います。

Linuxでファイル検索をする方法は”find”コマンドを使用します。

今回の記事では、findコマンドの使い方や良く使うオプションなどを紹介します。早速findコマンドの使い方からやっていきましょう!

ファイルの検索はfindコマンドを使用する

findコマンドの使い方は以下の通りです。

find -name "*test*"
find [オプション] [検索文字列]

「find -name “*test*“」でカレントディレクトリの中から”test”という文字列を含んだファイルを検索するという動作になります。

”*(アスタリスク)”は任意の文字列という文字列です。testという文字列の前後にどのような文字列があってもヒットします。

どのような動作になるのかは、実際にLinuxで動作させて確認してみましょう。

findコマンドを使ってみる

Linuxでファイルを検索するためには”find”コマンドを使用します。ファイルを作成して、検索できるか試してみましょう。

まず、検索するためのファイルを作成します。

touch test{1..10}.txt
ls -la

touchコマンドはファイルを作成するコマンドです。。 ファイル名の中にある”{1..10}” を使うことで、1から10の連番でファイルを作成することができます。test1.txtからtest10.txtの10個のファイルを一回のコマンドで作成しております。

また、lsコマンドを使用してファイルが本当に作成できているのかを確認します。コマンドを実行した結果は以下のようになります。

検索するためのファイルを作成

ファイルを作成したら、本題のfindコマンドを使ってみましょう。

find -name "*test*"

ファイル名でtestという文字列を含んだファイルを検索します。

findコマンドの実行結果

Linuxで実行すると、このような感じになります。

findコマンドでファイルを検索

先ほど作成したtest1.txtからtest10.txtのファイルを表示することができました。

ちなみに、findコマンドはファイルだけでなく、ディレクトリも検索できます。

mkdir testdir
find -name "*test*"

mkdirコマンドでディレクトリを作成します。ディレクトリの操作については、こちらの記事を参考にしてください。

linuxでコマンドを実行すると、このようになります。“testdir”ディレクトリもfindコマンドで検索可能です。

ディレクトリも検索可能

Linuxでファイルを検索する条件を指定する

findコマンドは、ファイル名の文字列以外でも検索することが可能です。

検索する条件は以下のようなものがあります。

ファイルを検索する条件
  • タイムスタンプ
  • ファイルの所有者権限
  • ファイルのサイズ

それぞれについて詳しく解説します。

ファイルのタイムスタンプで検索

まず、ファイルのタイムスタンプで検索する方法があります。タイムスタンプとは、何か操作した時間のことです。

例えば、ファイルの作成した時間や更新時間のことです。

タイムスタンプに関するオプションは以下の通りです。

検索式意味
-mmin 分数指定した分数より前に更新されたファイル(「-mmin 3」で3分前、「-mmin +3」で3分以上前、「-mmin -3」で3分以内に更新、以下同)
-mtime 日数指定した日数より前に更新されたファイル
-newer ファイル指定したファイルの更新時刻以降に更新されたファイル
-amin 分数指定した分数より前にアクセスされたファイル
-atime 日数指定した日数より前にアクセスされたファイル
-anewer ファイル指定したファイルのアクセス時刻以降にアクセスされたファイル
-cmin 分数指定した分数より前にステータスが変更されたファイル
-ctime 日数指定した日数より前にステータスが変更されたファイル
-cnewer ファイル指定したファイルのステータス変更時刻にステータスが変更されたファイル
-daystart-amin、-atime、-cmin、-ctime、-mmin、-mtimeで“今日”の始まりを今現在から24時間前ではなく、コマンド実行当日の0時にする
(引用:https://www.atmarkit.co.jp/ait/articles/1607/19/news028.html)

このように使用します。

find -mmin 1

これで、1分前に更新したファイルを検索できます。

ファイルの所有者・権限で検索

ファイルの所有者・権限で検索することも可能です。

オプションは以下の通りです。

 数値所有者のユーザーIDが指定した数値のファイル
-user 名前所有者の名前が指定した名前のファイル
-gid 数値所有グループID番号が指定した数値のファイル
-group 名前所有グループ名が指定した名前のファイル
-nouserユーザーIDに対応するユーザーがいないファイル
-nogroupユーザーグループID番号に対応するグループがないファイル
-perm モードパーミッションがモードと一致したファイル(「-モード」で指定したモードを全て許可しているファイル、「/モード」で指定したモードのいずれかを許可しているファイル)

ファイルのサイズで検索

最後にファイルのサイズで検索します。

オプションは以下の通りです。

-size サイズファイルサイズが指定したサイズに一致したファイル(「-size +3k」でサイズが3KBより大きなファイル)

Linuxでファイル検索をする方法まとめ

最後にまとめです。

findコマンドの使い方はこちらです。

find -name "*test*"
find [オプション] [検索文字列]

findコマンドで失くしたファイルを探しましょう。

Linuxのその他のコマンドはこちらの記事で解説しております!ぜひ参考にしてください。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST