2013-05-21 58 views
-1

試圖寫它搜索了兩個文件中的文件夾中的腳本,一旦這些文件被發現,那麼它必須在一個執行一些操作的另一個文件:文件搜索recursivly在Windows

我使用Windows爲此腳本。

以下是文件夾層次結構:

     Logs 
        /| \ 
       abc def xyz 
       /\ /\  /\ 
       ANR etc ANR etc ANR etc 

等=文本文件。

我所試圖做的事:

我要檢查ANR文件夾是否兩個文件(pqr.txt和rst.txt)是否有或沒有,如果這些文件都存在然後做了手術等等,就像我必須閱讀一個特定的文本文件並搜索特定文本文件中的某些關鍵字。

我如何接近:

#!/bin/usr/perl -w 
use strict; 
use Cwd; 
use File::Find; 
my $dir ="C:\APTscripts\APStress\Logs"; 

find(\&file_operation,$dir); 

$first_file = @ARGV[0]; 
$sec_file= @ARGV[1]; 

sub file_operation 
{ 
    my $file = $_; 
    if(($file =~ /teaces/) && ($file =~ /traces.txt.bugreport/)) 
    { 
     Do some opeartion 
    } 
} 

但這個邏輯我不能夠做任何我是個嘗試做的。任何人都可以幫助我解決這個問題。

+0

您有什麼問題?除非你解釋你的問題,否則我們無能爲力。 –

+0

反斜槓在雙引號中是特殊的。爲路徑使用單引號或正斜槓。 – choroba

+0

@ Jim ..我可以到達ANR文件夾並檢查這兩個文件,但是一旦我檢查到那兩個文件在那裏,那麼將如何來自該文件夾並對ANR文件夾外側的文件執行操作。 – Maverick

回答

1

這一個根據你的描述檢查父文件夾:

sub file_operation { 
    my $file = File::Spec->rel2abs($_); 
    if(($file =~ /traces/) && ($file =~ /traces.txt.bugreport/)) { 
     my ($parent) = ($file =~ m!(.*)/!); 
     if (-f "$parent/ANR/pqr.txt" or -f "$parent/ANR/rst.txt") { 
      print "Do some opeartion: $file $parent\n"; 
     } 
    } 
} 
+0

'my $ file = $ File :: Find :: name;'也會產生絕對路徑。不確定跨平臺兼容性。 – Zaid

+0

@ Perreal .. my($ parent)=($ file =〜'(。*)/');我在這裏得到錯誤..我試着用我的($父母)=($文件=〜/(.*)/);那麼它正在工作..所以我做對了嗎? – Maverick

+0

@Maverick,是的,它錯了,更新 – perreal