2011-10-20 18 views
0

私は出力ディレクトリに最新のもの以外のすべてのファイルを削除するようにしています。最近のもの以外のフォルダ内のすべてを削除するperl

my @files = grep{ -f && -t } glob($outputdir); 
349 
350 my @expected_file = grep { /SequenomComparisonSummary\_(\d+)\.txt/} @files; 
351 foreach my $file(@expected_file){ 
352 
353 unlink $file; 
354 warn "Removing file $file\n"; 
355 } 

しかし、最近のものをディレクトリに保存して残りの部分を削除したいのですか?これを行う簡単な方法はありますか?

お寄せいただきありがとうございます。

答えて

3

方法について:

unlink $file if -M $file > 7; # unlink if older than one week 


PS(またはあなたがあなたのgrep条件の一部として-M > 7を使用することができます。)。あなたのgrep状態の-tはおそらくそれがあなたが思っていることをしていないでしょう。 the docsから:

-tからファイルハンドルが開いています。」

"引数を省略すると、STDINをテストする-tを除いて、$_をテストします。

だからあなたのコード内の-tSTDINは、私はあなたが本当にチェックしたいものではありませんと仮定したい端末であるかどうかをチェックしています。

+0

こんにちは、Ilmari、ありがとう!きれいに見つかったそれはTでなく、-tでなければなりません。もう一度ありがとう –

関連する問題