重要なお知らせ

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

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

あるフォルダ内の
ファイルを削除するのに

(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を含むものだけ削除したい

という場合はどのようにすればいいのでしょうか

A 回答 (2件)

unlink(<*1012.txt>);


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

ご返答ありがとうございます

unlink glob( ~~ )というのを 使って

うまくいきました

お礼日時:2006/09/13 19:50

ちょっと難しいかもしれませんが、


「ディレクトリ内のファイル一覧を取得し、
 名前が正規表現のパターンと一致したらファイル削除」
という方法で行けます。

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;
}

正規表現については、検索するといろいろ出てきます。
    • good
    • 0
この回答へのお礼

ご返答ありがとうございます

unlink glob( ~~ )というのを 使って

うまくいきました

ワイルドカードを使用しました

お礼日時:2006/09/13 19:51

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