findコマンド
ファイル名newfile.txtを検索する
[bash] $ find . -name newfile.txt -print [/bash]
拡張子が「.txt」のファイルを検索する
[bash] $ find . -name '*.txt' -print [/bash]
カレントディレクトリ下にあるファイルを検索する
[bash] $ find . -type f -print [/bash]
カレントディレクトリの下にあるディレクトリを検索する
[bash] $ find . -type d -print [/bash]
カレントディレクトリの下にあるシンボリックリンクを検索する
[bash] $ find . -type l -print [/bash]
locateコマンド
locateコマンドが使用できるか確認
[bash] $ locate --version [/bash]
下記のように表示されれば使用可能
[bash] mlocate 0.26 Copyright (C) 2007 Red Hat, Inc. All rights reserved. このソフトウェアは GPL v.2 に基づいて提供されています。
このプログラムは法律が許す範囲で無保証で提供されます。 [/bash]
インストールされていたら、ファイルパス一覧をデータベースに登録するため、rootユーザになって下記コマンドを実行してデータベースを作成する。
locateコマンドは事前にファイルパスをデータベースに登録してあり、このデータベース内を検索するので高速に動作する。対してfindコマンドは実行するたびにディレクトリツリーを伝ってすべてのファイルを検索するため、locateコマンドなら一瞬で済む検索が何分もかかることも。
ただしlocateコマンドはファイルをデータベースに登録してあることが前提のコマンド。locateコマンドがインストールされていれば1日1回、自動的にデータベースにファイルを登録する設定がされている。新規で作成したばかりのファイルは、データベースに登録されていなければlocateコマンドでは検索結果に出てこない。
拡張子が「.txt」のファイルを検索
[bash] $ locate '*.txt' [/bash]
ファイル名だけを検索対象にしたい
[bash] $ locate -b php [/bash]
複数の検索パターンを指定するとOR検索になる
例:パスに「newfile」または「oldfile」のどちらかを含むものを検索する
[bash] $ locate newfile oldfile [/bash]
複数の検索パターンでAND検索にしたい場合
例:パスに「new」と「year」両方を含むものを検索する