ファイルシステム検索
関連記事
このページではファイルシステムを検索するのに使えるユーティリティを説明しています。
目次
find
find は最初はとっつきにくく感じるかもしれません。また、ファイルの名前を引数として指定すると、ファイルシステムからその名前に一致するファイルを検索するようなコマンドだと勘違いしてしまうこともあるでしょう。そのようなプログラムを求めているときは下の #locate を見て下さい。
find ではディレクトリを指定してエクスプレッションに対してそれぞれのファイルをマッチさせます。これにより強力な"ワンライナー"を書くことができますが、上述のように操作は直感的とは言いづらいものなっています ([1] を参照)。
インストール
find は base パッケージグループに含まれている findutils パッケージに入っています。つまり、Arch ではデフォルトでインストールされます。
オプション
find には約100ものオプションが存在しますが、以下の3つのカテゴリに分類することが可能です。
ファイルシステムトランスバーサル
These include the following,
- whether or not to follow symbolic-links
- Optimizations to perform during transversal
- Whether or not produce a certain kind of diagnostic output
エクスプレッション
Expressions are the meat and potatoes of find. They allow to filter the filesystem for a, potentially explicit, list files. In mathematical terminology, they allow you to define a relation on a list of files. This is the fundamental distinction between find and other search tools!
Expressions can be devided into the following categories
判別式
- ファイル名
- ディレクトリの深さ
- ファイルのタイプ
- 変更日時
- ファイルのパーミッション
- ファイルを引数として指定するシェルコマンド
アクション
- ファイルの削除
- シェルコマンドの実行
オペレータ
Operators allow you to combine sets of expressions together.
The power of find is the combination of this rich set of expressions.
使用方法
Any usage of find takes the following general form:
$ find [filesystem transversal options] [list of directories to search] [list of expressions to perform]
For every file listed under the given directories, each expression is performed, from left to right. Thus, the order in which expressions are listed is important!
locate
locate
は名前でファイルを探すための Unix ツールです。あらかじめ作成したデータベースファイルを使って検索するので find よりも高速に検索できます。欠点としては、データベースファイルを作成した後にファイルシステムに変更を加えても locate
からはわかりません。定期的に updatedb
コマンドを実行するようにして、データベースを更新する必要があります。
インストール
他のディストリビューションでは locate
や updatedb
は findutils パッケージに入っていますが、Arch のパッケージには存在しません。使用したいときは、mlocate パッケージをインストールしてください。mlocate は locate を新しく実装しなおしたツールで、使用方法は同じです。
locate
を使用する前に、データベースを作成します。root で updatedb
を実行してください。
データベースを最新にする
mlocate
をインストールすると、systemd
によって毎日スクリプトが自動的に実行されて、データベースが更新されます。root で updatedb
を実行することでデータベースの更新はいつでも手動で行えます。
時間を節約するために、/etc/updatedb.conf
を編集することで特定のファイルシステムやパスを無視するように updatedb
を設定することが可能です。ファイルのセマンティクスについては man updatedb.conf
を実行してみてください。デフォルト設定では /media
と /mnt
が無視されるようになっています ("PRUNEPATHS")。そのため locate
は外付けデバイスのファイルを検索しません。
デスクトップ検索エンジン
- Baloo — KDE のファイルインデックス作成・検索ソリューション。
- Catfish — 多目的のファイル検索ツール。
- Docfetcher — Java によるオープンソースのデスクトップ検索アプリケーション。
- Gnome Search Tool — ファイルを検索するデフォルトの Gnome ユーティリティ。
- Gnome Search Tool No Nautilus — GNOME Files や gnome-desktop を使わずにファイルを検索する gnome-search-tool。
- Pinot — パーソナル検索とメタ検索ツール。
- Recoll — Xapian がバックエンドのフルテキスト検索ツール。
- Searchmonkey — 正規表現が使えるパワフルな GUI 検索ユーティリティ。
- Strigi — Qt GUI を持った高速なデスクトップ検索エンジン。
- Tracker — オールインワンのインデックス作成・検索ツールとメタデータのデータベース。