node.jsのいろいろなモジュール28 – globでファイル検索

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

globで検索

globとは、Unixシェルで使われている規則に従って指定されたパターンにマッチする
すべてのパス名を見つけ出すモジュールです。
globのルールは正規表現ではなく、標準Unixパス拡張ルールに準拠します。
いくつかの特殊な文字(*、?、[])があり、そのパターンルールがファイル名に対して適用されます。

globを使えば、ファイルシステム上の特定ルールに従ったファイル郡を探すのが非常に楽です。
今回はglobのjavascript実装である、node-globを使用してみます。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Node.js : v0.10.0
  • npm : 1.2.14

npmを使用してglobモジュールをインストールします。

% mkdir glob
% cd glob
% npm install glob

使ってみる

globの使い方は簡単です。globをrequireし、検索したいパターンとコールバックを渡すだけです。

var glob = require("glob")

function find(pattern) {
	glob(pattern, function (err, files) {
		if(err) {
			console.log(err);
		}
		console.log(pattern);
		console.log(files);
	});
}

var pattern = "**/*.js";
find(pattern);

pattern = "**/glo?.js";
find(pattern);

pattern = "**/*[0-9]*.js";
find(pattern);

上記例では、いくつかのパターンで検索しています。
*は名前の一部にあるゼロ個以上の文字にマッチします。
?は名前の指定した位置に存在するどのような1文字にもマッチします。
そして、[範囲]を使えば、特定の文字の範囲をマッチさせることが可能です。

また、例では非同期で実行されますが、glob.sync関数を使用すれば同期実行させることもできます。

まとめ

非常に簡単に検索ができました。
なお、githubには検索時に使用できるオプションも書いてあるので確認してみてください。

参考サイトなど