2013-07-24 9 views
-1

디렉토리에 다른 이름의 텍스트 파일이 여러 개 있습니다. 모든 텍스트 파일에서 문자열을 검색하고 텍스트 파일에있는 문자열을 찾으려면 해당 텍스트 파일의 이름을 ABC.txt로 바꾸고 싶습니다.텍스트 파일의 이름 바꾸기

누구나이 펄 스크립트를 수행하는 데 도움을 줄 수 있습니까?

+2

당신이 직접 시도하는 일이 있나요? 일반적으로 시도한 것을 보여주는 것이 좋습니다 ... [묻는 방법] (http://stackoverflow.com/questions/how-to-ask)을보십시오. – chrsblck

+0

두 개 이상의 파일에 문자열이 포함되어있는 경우주의하지 않으면 마지막 파일을 제외한 모든 파일이 손실됩니다. 특정 디렉토리에 한 번에 하나의 파일 만 ABC.txt라는 이름으로 저장할 수 있기 때문입니다. –

답변

2

이것은 당신이 찾고있는 것을해야합니다.

시간을 투자하여 어떻게 작동하는지 파악해야합니다.

는 희망 당신은 같은 디렉토리에 ABC.txt라는 이름의 one 파일을 가질 수 있음을 알고 있습니다 "내가 ABC.txt에 텍스트 파일의 이름을 변경하려면". 그래서 파일을 만들고 있어요 : 이것은 BTW 안된

ABC.txt ABD.txt ABE.txt 등등을 ...

#!/usr/bin/perl 

use strict; 
use warnings; 

use autodie; 
use File::Copy; 

my $dir = "test-dir"; 
opendir(my $dh, $dir); 
chdir $dir; 

my @files = grep { !-d $_ } readdir $dh; 

closedir $dh; 

my $new = "ABC"; 
for my $file (@files) { 
    open my $fh, "<", $file; 

    while(my $line = <$fh>) { 
     chomp $line; 
     if($line =~ /something/) { 
      move($file, "$new.txt"); 
      $new++; 
      last; 
     } 
    } 
    close $fh; 
} 
+0

텍스트를 찾은 후에 파일 읽기를 중단하려면'$ new ++;'다음에'last;를 쓸 여유가 있습니다. –

+0

@JonathanLeffler는 그것을 놓쳤습니다. 고마워요. – chrsblck

관련 문제