• ベストアンサー

ファイルの削除について

あるフォルダ内の ファイルを削除するのに (1)unlinkを使用する (2)1つのファイルであれば unlink<abc.txt>でいい (3)テキストファイルを全部消すのであれば unlink<*.txt>でいい というところまでは わかっています ですが たとえば フォルダ内に abc1011.txt abc1012.txt abd1011.txt abd1012.txt abe1011.txt abe1012.txt abf1011.txt abf1012.txt のような ファイルがあり 1012を含むものだけ削除したい という場合はどのようにすればいいのでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

unlink(<*1012.txt>); あるいは、 unlink(<*1012.*>); とか unlink(<*1012*.*>); 基本的にファイルグロブのパターンはシェルと同じなので、 シェルで(dir とかls とかで)調べてから実行してみて下さい。

mmmmmm00
質問者

お礼

ご返答ありがとうございます unlink glob( ~~ )というのを 使って うまくいきました

その他の回答 (1)

  • yukimican
  • ベストアンサー率70% (112/159)
回答No.1

ちょっと難しいかもしれませんが、 「ディレクトリ内のファイル一覧を取得し、  名前が正規表現のパターンと一致したらファイル削除」 という方法で行けます。 my $dir = "/path/to/dir"; #対象ディレクトリパス # ディレクトリを開く if(opendir(DIR, $dir)){   # 1つずつファイル名を取得   while(my $file = readdir DIR){     # current、parentは無視     next if $file =~ /^\.{1,2}$/;     # 正規表現で名前チェック     if($file =~ /.*1012[.]txt/){       unlink $file; # ファイル削除     }   }   #ディレクトリを閉じる   closedir DIR; } 正規表現については、検索するといろいろ出てきます。

mmmmmm00
質問者

お礼

ご返答ありがとうございます unlink glob( ~~ )というのを 使って うまくいきました ワイルドカードを使用しました