Re: [問題] 目錄下的檔案中比對字串

看板Perl作者 (What?)時間15年前 (2010/04/10 03:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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)
文章代碼(AID): #1BluRyTp (Perl)
文章代碼(AID): #1BluRyTp (Perl)