重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

カレントフォルダの中にある画像ファイルの数を数えたいのですが、どのようにすればいいでしょうか?
(画像ファイル、と指定ができない場合はカレントフォルダの中にあるすべてのファイル数)
opendirとか使えばできますか?

#perlです。

A 回答 (4件)

opendir(FOLDER,"meibo");


@list = readdir(FOLDER);
closedir(FOLDER);

my ($cnt) = 0;
foreach (@list)
{
 if ($_ =~ /.+\..+/) { $cnt++; }
}

とすれば、「ファイルと思われる物」の数をカウントします。

このforeach文を

foreach (@list)
{
 if ($_ =~ /.+\.jpg$/) { $cnt++; }
 elsif ($_ =~ /.+\.jpeg$/) { $cnt++; }
 elsif ($_ =~ /.+\.jpe$/) { $cnt++; }
 elsif ($_ =~ /.+\.gif$/) { $cnt++; }
 elsif ($_ =~ /.+\.png$/) { $cnt++; }
 elsif ($_ =~ /.+\.bmp$/) { $cnt++; }
}

とすれば、「JPG、GIF、PNG、BMPファイルと思われる物」の数をカウントします。
    • good
    • 0
この回答へのお礼

無事できました。
ありがとうございます。

質問なのですが、
if ($_ =~ /.+\..+/) { $cnt++; }
はどういう意味なのでしょうか?

お礼日時:2003/03/13 13:25

>if ($_ =~ /.+\..+/) { $cnt++; }


>はどういう意味なのでしょうか?

簡単な正規表現です。
この例の場合、「何文字か文字が続いた後に"."があって、さらに何文字か文字が続く」という意味です。

正規表現については、とほほのWWW入門でも詳しく解説されていますし、正規表現だけを取り扱ったサイトもたくさんありますので、色々なサイトを見て勉強されれば良いと思います。

参考URL:http://tohoho.wakusei.ne.jp/wwwperl1.htm#Expr
    • good
    • 0
この回答へのお礼

説明ありがとうございます。

正規表現はどうしても苦手で…。
でも避けて通れない道ではあるんですよね。

ありがとうございました。

お礼日時:2003/03/13 13:39

#1です。



>これでファイル数が取得できているのでしょうか?

全てのエントリ(ファイル・フォルダ)を取得しています。
パソコンをDOS画面で使用した事はありますか?
DIRコマンドを実行すると、自分のいるディレクトリ、1つ上のディレクトリが「.」と「..」で表されますよね?
それもエントリとして取得されています。
ですから、#1に書いたように関数だけに頼らず、ご自身でファイルを選別する必要があります。
    • good
    • 0
この回答へのお礼

再度回答ありがとうございます。

>全てのエントリ(ファイル・フォルダ)を取得しています。
>関数だけに頼らず、ご自身でファイルを選別する必要があります。

実際にはどのようにしたらいいのでしょうか?
DOSは使用したことありますがあまり詳しくはわかりません。
よろしくお願いします。

お礼日時:2003/03/13 10:30

opendir()した後にreaddir()でエントリの一覧を取得し、そこからディレクトリを除外するか、拡張子で必要なファイル数をカウントすればできますよ。



参考URL:http://tohoho.wakusei.ne.jp/wwwperl2.htm#DirIo
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
とほほさんのところも見ましたがイマイチ理解できていません…。

以下のような構造になっています。
 ┗meibo
   ┣meibo.cgi
   ┣1.jpg
   ┣2.jpg
   ┣3.jpg
     :
   ┗197.jpg

この「meibo.cgi」でjpgファイルの数を数えたいのです。
opendir(FOLDER,"meibo");
while($folders = readdir(FOLDER)) {print "$folders\n";}
closedir(FOLDER);
としてみましたが…。
これでファイル数が取得できているのでしょうか?

お礼日時:2003/03/13 09:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!