Re: [問題] 目錄下的檔案中比對字串
※ 引述《jammy8 (jay)》之銘言:
: 請問各位
: 假設在/tmp目錄底下有/tmp/a .. z 的子目錄
: 我想要在a...z子目錄中尋找檔案裡有ERROR字樣的檔案
: 並且將找到的檔案分別複製到/tmp/20100410的目錄底下(隨著日期而產生檔名)
: 接著會放到crontab去做每30分鐘的check
: 請問有好的方法可以推薦給我嗎?
: 感恩阿
這樣子寫可以嗎?
#!/usr/bin/perl
use warnings;
use strict;
use File::Copy;
sub get_date
{
my (undef,undef,undef,$mday,$mon,$year) = localtime(time);
return sprintf "%d%02d%02d", $year+1900, $mon+1, $mday;
}
sub has_error
{
my $file = shift;
local $/;
open my $fh, $file or return 0;
return index(<$fh>, 'ERROR') >= 0;
}
sub check
{
my $dir = shift;
my $log_dir = shift;
for my $sub_dir ('a' .. 'z')
{
chdir "$dir/$sub_dir" or next;
opendir my $dh, '.' or next;
while (defined(my $file = readdir($dh)))
{
next if $file eq '.' || $file eq '..';
if (has_error($file))
{
mkdir $log_dir if !-d $log_dir;
copy $file, "$log_dir/$file";
}
}
closedir $dh;
}
}
my $tmp = '/tmp';
my $date = get_date();
check $tmp => "$tmp/$date";
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.184.18
※ 編輯: frank1983 來自: 61.230.184.18 (04/10 04:03)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章