Perl의 파일에 특정 정규 표현식이 있는 경우 파일 이름을 얻는 방법

Perl의 파일에 특정 정규 표현식이 있는 경우 파일 이름을 얻는 방법

많은 파일이 있는 디렉토리에서 특정 정규식(또는 형식)이 파일에 있으면 파일 이름을 얻고 싶습니다.

예:

  1. ramayana라는 파일에서 "rama"라는 단어가 발견되면 파일 이름 "ramayana"를 인쇄합니다.

  2. 파일 이름이 table 인 파일 이름에 ""와 같은 특정 형식이 포함되어 있는 경우 (TEXT - NUMBERS)셸에서 파일 이름 테이블을 인쇄합니다. 이는 매우 간단합니다.

    grep "mytext" * | cut -d':' -f1 | uniq

    하지만 Perl에서 이를 수행하는 방법

유용한 CPAN 모듈에 대한 제안도 높이 평가됩니다.

답변1

어쩌면 내가 조금 놓쳤을 수도 있지만 원래 요구 사항이 기본적으로 다음과 같다면:

grep -l "mytext" *

그러면 이에 perl상응하는 내용은 다음과 같이 작성할 수 있습니다.

perl -ne 'if(/mytext/){print"$ARGV\n";close ARGV}' *

노트독자 참고 사항: 다음 코드는 중재자의 의견을 바탕으로 업데이트되었으며 원래 질문과 완전히 호환되지 않습니다.

#!/usr/bin/perl

@list_code=qw{ over 100 elements here };
@original=@ARGV;

foreach $ele (@list_code) {
  @ARGV=@original;
  @found=();
  while (<>) {
    if (/\Q$ele\E/) {
      push @found,$ARGV;
      close ARGV;
    }
  }
  print "$ele found in ",scalar @found," files : \n",join "\n",@found,'';
}

관련 정보