Linuxでの検索コマンド【find】【locate】の使い方

findコマンド

ファイル名newfile.txtを検索する

$ find . -name newfile.txt -print

拡張子が「.txt」のファイルを検索する

$ find . -name '*.txt' -print

カレントディレクトリ下にあるファイルを検索する

$ find . -type f -print

カレントディレクトリの下にあるディレクトリを検索する

$ find . -type d -print

カレントディレクトリの下にあるシンボリックリンクを検索する

$ find . -type l -print

locateコマンド

locateコマンドが使用できるか確認

$ locate --version

下記のように表示されれば使用可能

mlocate 0.26
Copyright (C) 2007 Red Hat, Inc. All rights reserved.
このソフトウェアは GPL v.2 に基づいて提供されています。

このプログラムは法律が許す範囲で無保証で提供されます。

インストールされていたら、ファイルパス一覧をデータベースに登録するため、rootユーザになって下記コマンドを実行してデータベースを作成する。

locateコマンドは事前にファイルパスをデータベースに登録してあり、このデータベース内を検索するので高速に動作する。対してfindコマンドは実行するたびにディレクトリツリーを伝ってすべてのファイルを検索するため、locateコマンドなら一瞬で済む検索が何分もかかることも。

ただしlocateコマンドはファイルをデータベースに登録してあることが前提のコマンド。locateコマンドがインストールされていれば1日1回、自動的にデータベースにファイルを登録する設定がされている。新規で作成したばかりのファイルは、データベースに登録されていなければlocateコマンドでは検索結果に出てこない。

拡張子が「.txt」のファイルを検索

$ locate '*.txt'

ファイル名だけを検索対象にしたい

$ locate -b php

複数の検索パターンを指定するとOR検索になる

例:パスに「newfile」または「oldfile」のどちらかを含むものを検索する

$ locate newfile oldfile

複数の検索パターンでAND検索にしたい場合

例:パスに「new」と「year」両方を含むものを検索する

$locate --all new year

Linux の一覧