[Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その2
以下のエントリーの続き。
今回は、PerlのFile::Findモジュールを利用した方法を解説する。
[Linux]ディレクトリを再帰的にたどりファイル一覧を取得したい
http://katsubemakito.net/cgiperl/2006/10/_perl_1.html
特定のディレクトリ配下を再帰的にたどりファイル一覧を表示などしたい。階層の深さが決まっていればかんたんに取得できる方法もあるが、階層はまちまちで、今後もダイナミックに変化していく。このような場合にはどうすれば良いだろうか。
○File::Findモジュールを使用する
File::FindモジュールはPerlに標準で入っているため、通常はインストールの作業などはいらない。
;#
;#ファイル表示
;#
use File::Find;
#-- ディレクトリを指定(複数の指定可能) --#
@directories_to_search = ('./');
#-- 実行 --#
find(\&wanted, @directories_to_search);
#--------------------------------------------
#ファイルが見つかる度に呼び出される
#--------------------------------------------
sub wanted{
print $File::Find::dir, '/'; #カレントディレクトリ
print $_; #ファイル名
print "\n";
#フルパスのファイル名
#print $File::Find::name, "\n";
}
○実行結果
./.
./index.cgi
./define.pm
./dbdocs
./js
./js/index.js
./note
./note/index.cg
./note/add.cgi
./note/view.cgi
./note/del.cgi
./css
./css/view.css
File::Filndモジュールは、この他にハッシュ(連想配列)に実行結果を入れることができるなど、オプションも充実している。詳しくはドキュメントを読まれたい。
File::Find - Traverse a directory tree.
http://search.cpan.org/~nwclark/perl-5.8.7/lib/File/Find.pm
○関連
[Linux]ディレクトリを再帰的にたどりファイル一覧を取得したい
http://katsubemakito.net/cgiperl/2006/10/_perl_1.html
[Perl]ディレクトリを再帰的にたどりファイル一覧を取得したい その1
http://katsubemakito.net/cgiperl/2006/10/perl1.html
