※ ChatGPTを利用し、要約された質問です(原文:最新のファイルのみ検索)
ファイル検索を最適化する方法
このQ&Aのポイント
サーバー内のファイルを検索する際に、最新のファイルのみを対象にする方法を考えています。
ファイルの中身を検索する際、指定していない拡張子のファイルは無視するように改造することが可能です。
検索対象ファイルが膨大に増加しているため、30日以上古いファイルを無視するように改造することができないか検討しています。
サーバー内のファイルを検索するのにKentWebさんのwwwsrch.cgiを利用しています。
#
# すべてのファイルをなめ回す
#
sub search1 {
local($dir) = $_[0];
local(@filelist, $file, $filename);
opendir(DIR, $dir);
@filelist = readdir(DIR);
closedir(DIR);
foreach $file (@filelist) {
if ($file eq ".") { next; }
if ($file eq "..") { next; }
$filename = "$dir/$file";
if (-d $filename) {
if ($recursive_flag) {
&search1($filename);
}
} else {
&search2($filename, $dir);
}
}
}
#
# ファイルの中身を検索する
#
# 指定していない拡張子のファイルは無視する
$suffix = ".html .cgi .pl";
$fname = substr($target, rindex($target, "."));
if ($suffix{$fname} != 1) {
return;
}
↑の条件に30日以上古いファイルを無視するように改造することはできないでしょうか?
検索対象ファイルが数十万以上と莫大に増加してきたため、最新のファイルのみ検索対象にできればと考えております。
お礼
ご回答有難うございます。 質問直後に-Mとifを使って何とかできたのですが、 お教えいただいた書き方の方が、綺麗ですので、 早速使わせてもらいました。 30日のところは$FORM{'day'}にして、フォームで指定するようにしました。 unlessのような書き方は使ったことがなかったため大変勉強になりました。