특정 디렉토리와 모든 하위 디렉토리를 검색하는 스크립트를 Perl로 작성하려고합니다. 이것의 목적은 스크립트가 디렉토리의 모든 파일과 특정 텍스트 문자열 (정의한 모든 문자열)을 찾는 모든 하위 디렉토리를 읽어야한다는 것입니다. 문자열이 파일에서 발견되면 스크립트는 파일의 경로와 이름을 새 텍스트 파일에 인쇄하고 디렉토리 트리의 모든 파일로 계속 진행합니다.문자열을 검색하는 파일을 읽고 경로를 출력하십시오.
나는 이런 식으로 정신을 차리고 있지만 계속하는 법은 잘 모르겠습니다. 필자는 Perl 초보자이며이 모든 옵션에 대한 단서가 없습니다.
#!/usr/bin/perl
use strict;
use File::Find;
my $dir = 'C:\PATH\TO\DIR';
my $string = "defined";
find(\&printFile, $dir);
sub printFile {
my $element = $_;
open FILE, "+>>Results.txt";
if(-f $elemento && $elemento =~ /\.txt$/) {
my $boolean = 0;
open CFILE, $elemento;
while(<CFILE>) {
if ($string) {
print FILE "$File::Find::name\n";
}
close CFILE;
}
}
close FILE;
}
sleep(5);
아마도 자신의 롤링 대신에 많은 구현 중 하나 인'grep'을 사용하는 것을 선호 할 것입니다. – bluevector
위와 같이 Perl의'grep()'함수를 사용할 수 있습니다. 또한 경험에 비추어 볼 때, 파일 대신에 STDIN으로 출력하는 것을 추천한다 ('print()'). '>'리디렉션을 사용하여 출력을 파일로 재지 정할 수 있습니다. 이렇게하면 스크립트에 더 많은 유연성 (예 : 출력을 다른 프로세스 등으로 파이핑)을 할 수 있습니다. – m0skit0
grep 사용을 시도했지만 원하는 하위 결과를 모두 보여주지 못해 원하는 결과를 얻지 못했습니다. 그것이 내가 다른 해결책을 찾으려고 노력하는 이유입니다. –