gabuLog

趣味と考え事をつらつらと

コマンドとファイルの検索

概要

LinuxにはファイルやLinuxのコマンドについて検索したりすることが多くある。

検索一つをとってもいろいろな検索があるので用途に応じた検索を行うようにしよう。

findコマンド

find [パス] [式]

findコマンドの主な式
説明
-name 指定したファイル名で検索
-type ファイルの種類で検索

d(ディレクトリ)、f(通常ファイル)、l(シンボリックファイル)

-size 指定したブロックサイズで検索
-atime

指定した日時を基に、最終アクセスがあったファイルを検索

+数値(数値以上前)、数値(数値の指定)、-数値(数値以内)

-mtime 指定した日時を基に、最終更新されたファイルを検索
-print 検索結果を標準出力
-exec command \: 検索後、コマンドを実行

指定したディレクトリ配下で、指定した検索条件に合致するファイルを検索する。式を活用して様々な条件を指定できる。

デフォルト実行するとカレントディレクトリが設定されている。

findコマンドの実行例①

findコマンドの実行例①

findコマンドの実行例②

findコマンドの実行例②

findコマンドの実行例③

findコマンドの実行例③

locateコマンド

locate [オプション] [パターン]

locateコマンドのプション
オプション 意味
-d パス データベースの位置を指定
-r 正規表現を使って検索
-c 検索された数を表示
-e 現在、存在するファイルやディレクトリのみを検索

findコマンドと同様にファイルの検索を行う。

ファイル名・ディレクトリの一覧のデータベースを使用して、インデックス検索を行っているため高速で検索できる。

しかし、データベースには日単位で更新されるためすぐに反映されるわけではない。更新されるまでは検索対象からは外れる。

locateコマンドは引数にメタキャラクタを使用でき、正規表現を用いて検索をすることができる。

また、メタキャラクタを含まない文字列だけの検索をした場合、検索した文字列を含むファイル名およびディレクトリを全て表示する。

locateコマンドの実行例

locateコマンドの実行例

updatedbコマンド

updatedb [オプション] [パス]

updateコマンドのオプション
オプション 説明
-e データベースのファイルの一覧に取り込まないディレクトリパスを指定
-o 更新対象のデータベース名を指定。独自に作成したデータベースを指定したい場合に使用

データベースの更新を行う。

引数なしで実行した場合は/etc/updatedb.confに記載されているデータベースのパスを参照し更新する。

updatedbコマンドの実行結果

updatedbコマンドの実行結果

updatedbコマンドを実行したらlocateコマンドで検索できるようになっている。

更新されたことが確認できる。

whichコマンド

which [オプション] [コマンド名]

whichコマンドのオプション
オプション 説明
-a 最初に見つかったものだけでなく、環境変数PATHに合致したものを全て表示
-i 標準入力からエイリアスを読み込み、合致したものを表示

whichコマンドの実行例

whichコマンドの実行例

指定されたコマンドがどのディレクトリに格納されているか確認する。

whichコマンドで表示されないのは、内部コマンドのためである。表示されるのは外部コマンドのみである。

whereisコマンド

whereis [オプション] [コマンド名]

whereisコマンドのオプション
オプション 説明
-b バイナリの場所を表示
-m マニュアルの場所を表示
-s ソースファイルの場所を表示

指定されたコマンドのバイナリ、ソース、マニュアルページの場所を表示する。

whereisコマンドの実行例

whereisコマンドの実行例

まとめ

パイプとか一緒に使って、検索すると活用しやすいので覚えておこう。