Linuxの検索方法:findとlocateの使い方

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

Linuxの中にあるファイル構成をすべて覚えておいたり、必要なディレクトリをすぐに見つけたり、というのはなかなか大変なことだ。

また、自動生成したファイルや他の人が作ったファイルを探したいというときもあるだろう。

そういうときは、Linuxの検索機能を使っていく。

このページではLinuxの検索について大まかにまとめている。参考にしてほしい。

Linuxの検索について

linuxに限らずOSは膨大な量のバイナリやテキスト、デバイスファイルなどのファイルの種類を問わず管理することになる。そこで重要になってくるのが「ファイルの検索」だ。

「ファイル名がわかるがどこにそのファイルがあるかわからない」「変更した日付はわかるが、名前がわからない」「とあるパーミッション情報をもっているファイルを列挙したい」など、そんな断片的な情報からファイルを検索してくれる。

Windowsの場合、右上の検索欄に検索したいファイル名などを入力すればよい。Google Desktopなども有用だ。

しかしLinuxの場合は検索欄などはなく、検索もコマンドを使用して行うことになる。コマンドとしては「find」や「locate」などが代表として名前があがる。

検索を実行するfindコマンドの使い方

findコマンドについては下記で詳しいが、一通りこのページでもお伝えしておこう。

findは素直にディレクトリ内を再帰的にたどり、検索していくコマンドである。ファイル名を始め、SUID、GUIDなどのパーミッションを条件としてファイルを列挙させたりすることが出来る。Linuxにおいて検索の最も使われる方法だろう。

書式: find パス 検索条件 アクション

では、実際にやってみよう。名前を指定してファイルをみつけたい場合。「/」ディレクトリを基準にして検索をかけたい場合は、

$ find / -name "<ファイル名>"

となる。探したいファイルはフルネームで記述すること、また「"」でかこむことを忘れないようにしよう。名前が曖昧でおもいだせない時は「*」ワイルドカードを使用するとよい。

ワイルドカードは「任意の長さの文字0文字以上」という条件だ。

例えば

$ find /home/ken -name "file.*"

と命令をするとfile.txtやfile.py、file.htmlなどfile.のあとがなんであれfile.を含むファイルが軒並ヒットすることになる。

ただし検索の起点として「/」を指定すると一般ユーザは読み込みできないファイルなどが多数存在するのでもう少し条件をしぼった方がいいだろう、大概は「/etc」「/usr」などある程度ディレクトリを指定したほうが効率的だろう。

ディレクトリやファイルのみを指定する。

ディレクトリのみ表示 -d

ファイルのみ表示 -f

例 ディレクトリを指定して表示する。

$ find /home/ken -type -d

サイズを指定する

サイズ指定 -size

-を指定するとそのsize未満のものを列挙してくれる

+を指定するとそのsizeより大きいものを列挙してくれる

単位は「c」指定でバイト 「k」指定でキロバイト 「M」指定でメガバイト 「G」指定でギガバイト

を指定できる。

例 300kバイトより大きいものや小さいものを表示する。

$ find /home/ken -size +300k

$ find /home/ken -size -300k

パーミッション指定

-permを指定するとパーミッションを指定して検索ができる。

$ find /home/ken -perm -644

SUIDを指定する場合

$ find /usr/bin -perm -4000

SGIDを指定する場合

$ find /usr/bin -perm -2000

アクセス日時指定

-amin 最終アクセス時刻を分単位で指定

-atime 最終アクセス時刻を日単位で指定

-cmin 最終ステータス更新時刻を分単位で指定

-ctime 最終ステータス更新時刻を日単位で指定

-mmin 最終変更時刻を分単位で指定

-mtime 最終変更時刻を日単位で指定

これらを指定するとファイルを変更した日時を指定してファイルを検索できる。

例 変更日時が2時間以前のものを列挙するには

$ find /home/ken -mmin -120

とする。

ユーザを指定してディレクトリやファイルを検索する。

-user

$ find /home/ken -user ken

これらのパラメータは複数指定可能となっている

例えば

$ find /home/ken -user ken -perm -644 -name “file.*”

などとして絞り込みが可能となっている。

locateコマンドの使い方

findコマンドは非常に素直にファイルやディレクトリに検索をかける。しかしHDDなどの媒体だと、検索する時間が膨大になることがある。

そのため、ときと場合によっては「locate」コマンドを使用したほうがよいことがある。

locateコマンドはあらかじめファイルのデータベースを作成して、そのデータベースを参照して検索をかけるので非常に高速に動作する、

しかしデータベースを更新しないと、新しいファイルは反映されないので注意しよう。1日に一度程度でデータベースを更新しておくとよい。

実際に実行してみよう

操作自体は難しくない。まずデータベースを作成しよう

# updatedb

後に例えば

$ locate *.txt

などとすれば検索が出来る、findほど強力ではないが、検索が非常に高速なので、ぱっとファイルを検索したい時などに重宝するコマンドである。

精密にファイルを探したい場合、ある程度場所に見当をつけてからfindでしぼりだしするとよい。たいして漠然とファイル名の欠片が頭にあるのならばlocateを使用してぱっと探すというのがよいだろう。

まとめ

このページではLinux内のファイル検索についてまとめてお伝えした。それぞれのコマンドについてはコマンド集のページで詳しいので、詳細を知りたければそちらも参考にしてほしい。

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

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

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 伊万田あひる より:

    きょう初めて貴サイトにたどり着きました。おかげさまで必要な情報をいただき、トラブルが解決できました。御礼申しあげます。

    また、この総合サイトを拝見させていただき、これから種々お力になっていただけると思い有り難くおもっております。貴重なサイトを公開/運営されておられることに敬意を表します。

    当方、趣味の独学でLinuxを楽しんでいる者です。経歴は長いのですが、なかなかレベルがあがりません。拙ブログです。
    http://madahiru.blog81.fc2.com/blog-entry-805.html

    以上、御礼まで

    1. リカレントテクノロジー より:

      お役に立てたようで何よりです。
      引き続きご愛読の程宜しくお願いいたします。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する