- ベストアンサー
ファイルの削除について
あるフォルダ内の ファイルを削除するのに (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を含むものだけ削除したい という場合はどのようにすればいいのでしょうか
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
unlink(<*1012.txt>); あるいは、 unlink(<*1012.*>); とか unlink(<*1012*.*>); 基本的にファイルグロブのパターンはシェルと同じなので、 シェルで(dir とかls とかで)調べてから実行してみて下さい。
その他の回答 (1)
- yukimican
- ベストアンサー率70% (112/159)
ちょっと難しいかもしれませんが、 「ディレクトリ内のファイル一覧を取得し、 名前が正規表現のパターンと一致したらファイル削除」 という方法で行けます。 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; } 正規表現については、検索するといろいろ出てきます。
お礼
ご返答ありがとうございます unlink glob( ~~ )というのを 使って うまくいきました ワイルドカードを使用しました
お礼
ご返答ありがとうございます unlink glob( ~~ )というのを 使って うまくいきました