重要なお知らせ

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

電子書籍の厳選無料作品が豊富!

Perlで指定のディレクトリ以下のファイル名を全て表示させるスクリプトを考えておりますが、思いつきません。WindowsとLinuxの両方で利用たいです。
何かよいサンプルはありませんか?

よろしくお願いします。

A 回答 (2件)

指定ディレクトリ以下を再帰的に処理するならこんなのは


どうでしょう

sub dirtree {
  my $path = shift;

  opendir(DIR, $path);
  my @dirs = grep !/^\.\.*$/, readdir(DIR);
  closedir(DIR);

  for(my $i=0; $i<@dirs; $i++){
    my $fullname = $path . '/' . $dirs[$i];
    if(-d $fullname){
      $dirs[$i] = ' ' . $fullname; # ソート用にディレクトリを' 'でマーク
    }else{
      $dirs[$i] = $fullname;
    }
  }

  for my $fullname (sort @dirs){
    if($fullname =~ s/^ //){
      dirtree($fullname);
    }else{
      #******************************
      # ここに目的の処理を記述
      #******************************
      if($fullname =~ /\.html$/){
        print "$fullname\n";
      }
    }
  }
}
    • good
    • 0

sub printDir {


 opendir(DIR, $_[0]);
 @files = readdir(DIR);
 close(DIR);
 foreach(@files) {
  if ( $_ eq '.' || $_ eq '..' ) { next; }
  print "$_[0]/$_\n";
  if ( -d $_ ) {
   printDir( "$_[0]/$_" );
  }
}

 こんな感じでどうでしょ。
    • good
    • 0

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