Linuxの検索方法!find/locate/dirコマンドの使い方!
パソコンに詳しい方なら使っているLinux。皆さんはコマンドでファイル検索をどのように行っていますか?どんなコマンドがあるのか気になりますよね。そこでここではLinuxの検索方法やファイル検索のコマンドについて詳しくご説明したいと思います。
目次
- 1【Linuxの検索方法】コマンドの使い方
- ・findコマンド
- ・locateコマンド
- ・dirコマンド
- 2【Linuxの検索方法】<findコマンド>ファイル/ディレクトリを検索
- ・ディレクトリとは?
- ・findコマンドの基本動作
- 3【Linuxの検索方法】<findコマンド>サイズを指定して検索
- ・sizeオプションの使い方
- 4【Linuxの検索方法】<findコマンド>日時を指定して検索
- ・任意の日時にアクセスしたファイル・ディレクトリの検索
- ・任意の日時に更新したファイル・ディレクトリの検索
- 5【Linuxの検索方法】<findコマンド>パーミッションで検索
- ・permオプションの使い方
- 6【Linuxの検索方法】ユーザーを指定してファイル・ディレクリを検索する方法
- ・userオプションの使い方
- 7【Linuxの検索方法】locateコマンドの使い方
- ・locateコマンドの使い方
- ・知っておくと便利なlocateコマンドのオプションとは
- 8【Linuxの検索方法】dirコマンドの使い方
- ・dirコマンドの使い方
- 9【dirコマンド】知っておきたいオプション
- ・並び替え
- ・情報の表示
- ・合わせて読みたい!ファイルに関する記事一覧
【Linuxの検索方法】コマンドの使い方
Linuxとは、聞いたことはありますでしょうか?Linuxとは、パソコンに使われているものです。知り合いがLinuxを使っている。職場がLinuxを使用しているなどして、Linuxとは多少知っているという人もいるかもしれません。
Linuxとは?についてもう少し深堀をしていきます。Linuxとは、Unix系オペレーティングシステムカーネルであるLinuxカーネル、およびそれをカーネルとして周辺を整備したシステムである。フリーかつオープンソースなOSです。
Linuxとは、ソースコードが公開されているオープンソースのOSですので基本的に誰でも使うことができます。またLinuxでコマンドでファイル検索を行うにはどのような種類があるのか使い方も合わせて見ていきたいと思います。
findコマンド
findコマンドはファイルやディレクトリを検索するコマンドです。パソコンの中で作成したファイルがどこにあるかわからなくなった時はもちろん、Linuxを利用する上で設定ファイルを探すということはよくあることです。そういったものを探す役割があります。
findコマンドはどのような役割をするんだっけ?と思ったときには『find=見つける、探す』といった英語の意味合いから感じると覚えやすいですね。つまりfindコマンドの使い方は何かファイルを探すときに使います。
findコマンドを使うメリット
Linuxに限らずOSは膨大な量のバイナリやテキスト、デバイスファイルなどのファイルの種類を問わず管理することになります。そこで重要になってくるのが『ファイルの検索』です。『ファイル名がわかるがどこにそのファイルがあるかわからない』
『変更した日付はわかるが、名前がわからない』『とあるパーミッション情報をもっているファイルを列挙したい』など、そんなユーザーの断片的な情報からファイルを検索してくれる使い方ができるのがfindコマンドです。
Windowsの場合、右上の検索欄に検索したいファイル名などを入力すれば可能です。もちろんGoogle Desktopなども有用です。
locateコマンド
locateコマンドは『$ locate *.txt』などとすれば検索が出来、findほど強力ではないが、検索が非常に高速なので、ぱっとファイルを検索したい時などに重宝するコマンドです。精密にファイルを探したい場合、などはまずlocateコマンドを使います。
ある程度場所に見当をつけてからfindでしぼりだしするとよい。たいして漠然とファイル名の欠片が頭にあるのならばlocateを使用してぱっと探すというのがよいだろう。大まかな場所を探すのにlocateコマンドを使い、その後findコマンドで詳しく探し出します。
locateコマンドを使うメリット
findコマンドは非常に素直にファイルやディレクトリに検索をかけるのです。しかしHDDなどの媒体だと、検索する時間が膨大になることがあるので、ときと場合によっては『locate』コマンドを使用したほうが良いこともありまする。
locateコマンドはあらかじめファイルのデータベースを作成して、そのデータベースを参照して検索をかけるので非常に高速に動作するのですがデータベースを更新しないと、新しいファイルは反映されないので注意します。
dirコマンド
dirコマンドは自分が欲しいファイルがどこにあるかわからなかったときに検索できると便利です。Windowsでは、dirコマンドに/sオプションを付けることで、カレントディレクトリからサブディレクトリをたどって検索できます。
dirの通常の詳細情報ではなくパス付きのファイル名だけを表示したい場合には、/bオプションを付けます。
dirコマンドを使うメリット
dirコマンドを使うメリットはとにかくファイルの場所がわからなかったときにすぐに探し出してくれるコマンドなのでファイルがあるのか、ないのか…。といった場合に手軽にファイル検索を行うことができます。
基本的にdirコマンドはファイルやディレクトリの一覧を表示するときに使うコマンドとして使われます。
【Linuxの検索方法】<findコマンド>ファイル/ディレクトリを検索
さて、先ほどはLinuxのファイル検索を行うにあたってコマンドを3種類ご紹介しました。『findコマンド』『locateコマンド』『dirコマンド』です。これらの便利な使い方を知りたいですよね。この3種類にも細かいコマンド設定があります。
コマンドオプションを付けて検索をことでよりユーザーの欲しい情報を届けてくれます。そこでここではファイルの検索を行ってくれるfindコマンドの使い方やfindはどのようなものかについて見ていきたいと思います。
ディレクトリとは?
ファイルでのパーミッションの意味とは下記のがぞぅのようなものですが、これがディレクトリになると意味が違ってきます。基本ですがLinuxのディレクトリとは、WindowsやMacでいうところのフォルダのことです。
読み込み(read) | ディレクトリ内のファイルを見る lsコマンドをディレクトリ内で実行する |
書き込み(write) | ディレクトリ内に新規ファイルを作成する |
実行(execute) | 現在位置のディレクトリを指定する |
ディレクトリでのパミッションで実行する場合、何段階があるディレクトリ構成の中で好きなディレクトリを現在位置に指定することができます。このことをカレントディレクトリといいます。
ファイルのパーミッションの場合は読み込みや書き込み、実行などの言葉からなんとなく連想できる動作ですが、ディレクトリのパーミッションの場合は、読み込みと実行が言葉とは全く違う意味の動作になるので気を付けましょう。
ディレクトリのパーミッションの設定を変更すると、ディレクトリ内のすべてのファイルの設定が変わってしまいます。ディレクトリのパーミッションはファイルのパーミッション以上に注意して変更しましょう。
特に書き込みを許可してしまうと新しいファイルを作成されてしまうので、ファイルでもディレクトリでも、書き込みは基本的に許可しないようにしてください。
findコマンドの基本動作
まずはfindコマンドを入力すると起きる基本動作を覚えておきましょう。基本書式は『$ find ファイル名』になります。findに続き、検索するファイル名を指定する。のです例えば、workディレクトリ内のtest01.datを検索する場合は以下になります。
『$ find ./work/test01.dat』で最後のスラッシュの右側にあるものがファイル名です。
findコマンドの基本書式
さてfindコマンドの基本書式は『$ find ファイル名』とわかりましたね。ファイルを検索してみます。『$ find ./work/test01.datwork』のディレクトリ内のtest01.datが検索されました。上記findコマンドを試すなら下のコマンドをLinux上で実行します。
検索するファイルがなければエラーが表示される。workディレクトリ内のtest10.datは存在しないが、検索してみる。
『そのようなファイルやディレクトリはありません』とエラーが表示された。この表記はユーザーが作成したファイルが存在しないということです。基本的にfindコマンドはこのような使い方をします。
【Linuxの検索方法】<findコマンド>サイズを指定して検索
実はfindコマンドではサイズを指定して検索をすることも可能です。メールのキュー、メッセージ,パーティションを圧迫しているファイル等、サイズを条件にファイルを検索する時はfindのsizeオプションが便利といえるでしょう。
方法はfindでサイズを条件にしたい場合は大きいは『+』小さいは『-』で指定します。単位はkBが『k』、B『c』、何もつけないとブロックという単位になるので、kかcをつけると覚えたらいいですね。サイズがある程度わかるなら使い勝手がいいです。
それではfindコマンドでサイズを指定してファイル検索を行う方法をご紹介します。
sizeオプションの使い方
先ほどもお伝えしたようにサイズ指定のコマンド『-size』。『-』を指定するとそのsize未満のものを列挙してくれます。+を指定するとそのsizeより大きいものを列挙してくれるのです。単位は『c』指定でバイト 『k』指定でキロバイトです。
またそれより大きいサイズのものだと『M』指定でメガバイト『G』指定でギガバイトを指定できます。まずはサイズを指定するにあたってサイズオプションの書式があるのでサイズオプションの書式を見ていきたいと思います。
sizeオプションの書式
sizeオプションの書式は次の通りになります。『$ find 検索元 -size ファイル容量』です。workディレクトリ内のファイル容量が6byte以下のファイルを検索する場合は、次のとおりです。『$ find ./work/ -size -6c』で検索ができます。
【Linuxの検索方法】<findコマンド>日時を指定して検索
findコマンドではより、ユーザーの求めているファイルが見つけやすいように最終更新日など新着の情報wお素早く検索することのできるコマンドもあるのです。最新の更新日や時間がわかればすぐにfindコマンドを使ってファイル検索を行うことができます。
もちろん最新の日時ではなくても、過去の日時を指定してファイル検索を行うことも可能です。そこでここではfindコマンドのオプションでもある日時を指定してユーザーの欲しいファイルを検索する方法についてご紹介したいと思います。
任意の日時にアクセスしたファイル・ディレクトリの検索
まずは自分の探しているファイルの日時をfindコマンドのオプションを使って探し出しましょう。findコマンドのオプションには色々なものがあります。基本的に英語の意味合いからその時間の細かさを示しているので覚えやすいでしょう。
それではコマンドオプションをご紹介します。
atimeオプション
任意の日数にアクセスされたファイルやディレクトリを検索します。指定した日にアクセスしたファイルやディレクトリを検索できるオプションです。日数は、今日が0、昨日が1です。今日アクセスされたファイルが表示されます。
任意の日数以内にアクセスされたファイルやディレクトリをすべて表示したい場合は、日数に-を付けます。3日以内にアクセスされたファイルやディレクトリを検索する場合は、上記の画面の通りで今日から3日以内にアクセスされたファイルが表示されます。
任意の日数前までにアクセスされたファイルやディレクトリをすべて表示したい場合は、日数に+を付けます。3日よりも前にアクセスされたファイルやディレクトリを検索する場合は、上記の画面のようになります。
aminオプション
任意の分数にアクセスされたファイルやディレクトリを検索することもできます。ユーザーの指定した時間にアクセスしたファイルやディレクトリを検索できるオプションで直前にアクセスしたファイルを検索する場合は、上記の画面のようにします。
任意の時間以内にアクセスされたファイルをすべて表示したい場合は、分に『-』を付けます。25分以内にアクセスされたファイルを検索する場合は、上記の画面ののとおりです。
すると今から25分以内にユーザーがアクセスしたファイルが表示されました。
任意の時間の前までにアクセスされたファイルをすべて表示したい場合は、分に『+』付けます。25分よりも前にアクセスされたファイルを検索する場合は、上記の画面のようにします。
今度は今から25分よりも前にアクセスされたファイルが表示されました。
任意の日時に更新したファイル・ディレクトリの検索
先ほどは任意の日時にアクセスしたファイルを表示するfindコマンドをご紹介しました。最後にアクセスするのもすぐにわかりますよね。しかし、ここではアクセスした日はわからないけれど、最後にユーザーが更新したファイルを探し出したい。
そんなときのコマンドを紹介します。こういった場合に使うコマンドは『mtimeオプション』と『mminオプション』です。この2つのコマンドでファイル検索をLinuxで行ってみましょう。
mtimeオプション
任意の日数に更新されたファイルやディレクトリを検索します。これは指定した日に変更を行ったファイルやディレクトリを検索できるオプションです。日数は、今日が0、昨日が1です。今日変更されたファイルが表示されます。
任意の日数以内に変更を行ったファイルをすべて表示したい場合は、日数に『-』を付けます。10日以内に変更されたファイルを検索する場合は、上記の画面のようにします。
すると10日以内に変更されたファイルが表示されました。
任意の日数前までに変更を行ったファイルをすべて表示したい場合は、日数に『+』を付けます。20日よりも前に変更されたファイルを検索する場合は、上記の画面のようにします。20日より前に変更されたファイルが表示されました。
mminオプション
任意の分数に更新されたファイルやディレクトリを検索するコマンドです。指定した時間に変更を行ったファイルの場所を検索できるオプションです。今変更を行ったファイルを検索する場合は、上記の画面のようにすると今変更されたファイルが表示されます。
任意の時間までに変更を行ったファイルをすべて表示したい場合は、分数に-を付ける。12時間以内に変更されたファイルを検索する場合は、上記の画面のようにします。
12時間(720分)以内に変更されたファイルが表示されました。
任意の時間までに変更を行ったファイルをすべて表示したい場合は、分数に『+』を付けます。20時間よりも前に変更されたファイルを検索する場合は、上記の画面のようにします。
すると20時間(1200分)より前に変更されたファイルが表示されます。
【Linuxの検索方法】<findコマンド>パーミッションで検索
LinuxとはWindowsやMacなどと同じパソコンOSで、このLinuxでファイルやディレクトリを操作するときにはパーミッション(権限)が必要になります。Wnidowsの場合は「管理者権限で実行」という操作で簡単に権限が実行できます。
しかしLinuxの場合はパーミッションを設定しないと実行できません。パーミッションは基本的にセキュリティのためにあり、必要以上にパーミッションであなた以外の他のユーザーがさまざまな動作ができないように設定するのが一般的です。
そこでここではパーミッションで検索する方法をご紹介します。
permオプションの使い方
『-perm』を指定するとパーミッションを指定して検索ができます。後ろにパラメータを付けて、パーミッションを条件判定するのです。ユーザに対する書き込み権限があるファイルを探すには -perm -u=w というコマンドを付けます。
permオプションの書式
パーミッションの使い方としてまずは基本書式を覚えておきましょう。『$ find 検索元 -perm パーミッション』が基本的な書式となります。または『$ find 検索元 -perm -対象者=アクセス権』とします。
すると対象者は、所有者がu、グループがg、その他のユーザーがo、全対象者がaとなるのです。アクセス権は、読み込み権限がr、書き込み権限がw、実行権限がxとなります。workディレクトリ内のパーミッションが664を検索する場合は、次のとおりです。
『$ find ./work/ -perm 664』が表示されます。
【Linuxの検索方法】ユーザーを指定してファイル・ディレクリを検索する方法
まず、Linuxのユーザーについて解説します。Linuxの場合、パソコンの利用者には様々なケースがあります。一台のパソコンを複数ユーザーで直接操作し利用するユーザーと、ネットワークからサーバーにアクセスし活用するユーザーという分け方もできます。
どんな場合でも、利用者は全員ユーザー登録しておくべきです。登録しておけば、誰がいつログインしたかをlastコマンドで追跡できるので、セキュリティ対策にもなります。
また、ユーザーごとにファイルやディレクトリのアクセス権をchmodコマンドで設定することができるので、関係ないファイルを誤操作されてしまうリスクを軽減できるのです。それではuserオプションの使い方をみていきましょう。
userオプションの使い方
Linuxのユーザーの追加は、一般ユーザーでは操作できないのです。スーパーユーザーなど、管理者権限を持つアカウントで操作します。任意のユーザー名でユーザーを追加するのは、簡単です。まずは基本書式から説明します。
userオプションの書式
userオプションの基本書式をまずはご紹介します。『$ find /home/ken -user ken』です。これらのパラメータは複数指定可能となっているのです。
例えば『$ find /home/ken -user ken -perm -644 -name “file.*”』などとして絞り込みが可能となっています。
【Linuxの検索方法】locateコマンドの使い方
indコマンドは非常に素直にファイルやディレクトリに検索をかける。しかしHDDなどの媒体だと、検索する時間が膨大になることがあります。そのため、ときと場合によっては『locate』コマンドを使用したほうがよいことがあるのです。
locateコマンドはあらかじめファイルのデータベースを作成して、そのデータベースを参照して検索をかけるので非常に高速に動作します。
しかしデータベースを更新しないと、新しいファイルは反映されないので注意しましょう。1日に一度程度でデータベースを更新しておくとよいでしょう。
locateコマンドの使い方
locateコマンドでは、あらかじめ検索しておいたファイルやディレクトリのリストのデータベースを検索することで、高速な検索を行うことができます。
高速化のためにシンプルに名前しか検索対象としないので、findコマンドのようなユーザーや容量での検索はできないのです。それではlocateコマンドの使い方を説明します。
データベースの作成方法
オプションなしではデータベースはあらかじめ設定されたデータベースファイルを読み込みます。デフォルト以外のデータベースを指定する書式は上記の画面のようにします。データベースファイル/local/db/filedbを使用します。
locateコマンドの基本書式
『locateコマンド』の基本書式は次のようになります。『$ locate 検索キーワード』です。キーワード.csvが含まれるファイルやディレクトリを高速に検索する場合は、次のコマンドで行います。『$ locate .csv』を使いましょう。
知っておくと便利なlocateコマンドのオプションとは
高速でデータやファイルの検索を行ってくれる『locateコマンド』ですが、知っておくとさらに細かくファイルを検出してくれます。つまりユーザーが求めているファイルに合ったものを探し出してくれるのです。
そこでここでは知っておくと便利なlocateコマンドオプションをご紹介します。
「-b」ファイルやディレクトリ自体を検索する
『-b』はファイルの上位ディレクトリは検索せず、ファイルやディレクトリ自体を探す役割があります。
「-c」検索された数を表示す
『-c』は検索された数を表示します。覚え方としては英語の『count』の『c』と覚えておくと良いでしょう。
「-d」デフォルト以外のデータベースを指定する
『-d』ではデフォルト以外のデータベースを指定します。覚え方としては『デフォルト以外のd』です。
「-e」存在するファイル・ディレクトリのみを検索する
『-e』のコマンドオプションは現在、存在するファイルやディレクトリのみを検索する役割があります。
「-i」大文字・小文字を区別しない
『-i』のコマンドオプションは大文字小文字を区別しないのです。つまり検索するのにファイル名が全一致することなくても全てに該当するファイルを検索してくれます。こちらのコマンドを使っておけばファイルが見つからないことはないでしょう。
【Linuxの検索方法】dirコマンドの使い方
Linuxでよく使われるコマンドと言ってもいい『dirコマンド』。dirコマンドは指定したパスのディレクトリやファイル一覧を表示するコマンドで、『dir』とは『directory』を意味します。
コマンドでパスを指定すればそのパスの情報を、パスを省略すればカレントディレクトリの情報を表示するのです。
dirコマンドの使い方
dirコマンドを実行するとディレクトリに含まれるファイルとサブディレクトリの一覧を表示することができます。書式は上記の画面の通りです。ファイルとサブディレクトリの一覧が表示されました。一覧の中でディレクトリには <DIR> と表示がされています。
指定したディレクトリにあるファイルとサブディレクトリの一覧を表示することもできます。例えばカレントディレクトリが c:¥test の時にディレクトリ内にある c:¥test¥back ディレクトリに含まれるファイルとサブディレクトリの一覧を表示します。
上記の画面のように実行します。指定したディレクトリにあるファイルとサブディレクトリの一覧が表示されました。
dirコマンドの基本書式
dirコマンドを使う上でオプションも必要になりますが、まずは基本書式を覚えておくといいでしょう。dirコマンドの基本書式は『dir (file name) (option) [directory name]』です。これらに当てはめてオプションを使いこなしましょう。
【dirコマンド】知っておきたいオプション
Linuxを使う上でよく使われることが多いlocateコマンド。基本書式を覚えておけばあとはオプションのコマンドでよりファイルを見つけやすく検索することができます。そこでここではlocateのコマンドで知っておくと便利なオプションをご紹介します。
並び替え
dirコマンドを実行した時、デフォルトでは名前順に並び替えられてファイルおよびディレクトリの一覧が表示されます。並び替えの方法を変更するには『/o』オプションを使用します。(ソート順の前の「:」は省略可能です)。
他にも並び替えをするコマンドオプションは色々とありますのでここでは3種類ご紹介したいと思います。
「-c」最終更新日時で並び替え
dirコマンドオプションでもある『-c』を付けるとファイルの更新日時順に並べることができます。つまり最新の状態からファイルを検索することができるのでとても見つけやすいです。
「-t」変更日時で並び替え
dirコマンドに『-t』をつけると変更日時で並び替えをすることができます。いつそのファイルを変更したのか頭の中に入っていればすぐにファイルを検索することができるでしょう。
「-u」最終アクセス日時で並び替え
dirコマンドに『-u』を付けるとファイルへのアクセス時刻で並び替えることが可能です。(「-l」オプションと併用時は更新日時順)さっきアクセスしたのにファイルが消えてしまった!そんなときには非常に役立つコマンドでもあります。
情報の表示
単にdirを実行するだけでは上下に余分な情報(空き領域サイズなど)が含まれている場合があります。ファイル名の部分だけを取り出すには、コマンドプロンプト上でマウスを使ってテキストを選択してコピーしてもよいです。
しかしファイルの情報を表示させるとよりユーザーの欲しがるファイルを確実に見つけることができます。そこでファイル検索に便利な情報の表示をするコマンドをご紹介します。
「-d」今いるディレクトリの情報表示
dirコマンドに『-d』を付けるとディレクトリの中身の一覧ではなくディレクトリ自身を表示することができます。
「-l」詳細情報の表示
『-l』を付けるとファイルの詳細も表示することができるのです。例としてはアクセス権限, ハードリンクの数, 所有者名, グループ名, ファイルのサイズ(バイト), 更新日時, 名前です。
「-m」結果をカンマ区切りで表示
『-m』をコマンドオプションで利用すると結果をカンマ区切りで表示することができるので表示も非常に見やすいのです。
いかがでしたか?コマンドを使ってファイルを検索するとなると非常に便利です。「あれ?ファイルどこいった?」ともうならないような気がしますね。正直コマンドはアルファベットの表記なので難しく感じる方もいるでしょう。
しかし、コマンドの基本書式や役割などを理解してしまえばあとは打ち込むだけなので非常に簡単です。メモかなにかにコマンドを書き留めたりしながら覚えてみてください。ファイルを探すときの参考になればと思います。