디렉토리에서 파일 내용을 찾고 값을 추가하는 Bash 스크립트

디렉토리에서 파일 내용을 찾고 값을 추가하는 Bash 스크립트

엄청난 수의 파일이 포함된 디렉토리가 있습니다. bash 스크립트를 작성하고 싶습니다 -

  1. 해당 디렉토리를 입력하세요
  2. 그 중 Perl 스크립트가 무엇인지 알아보세요(하지만 .pl 확장자는 없습니다).
  3. 각 줄의 맨 위에 줄을 추가합니다. (새 shebang을 추가할 예정입니다.) Perl 스크립트가 아니면 아무것도 하지 마세요.

Perl 스크립트를 검색할 수 없습니다. grep을 사용해 보았지만 적절한 명령을 얻지 못했습니다. 또한 세 번째 단계에서도 제가 막히는 부분이 있습니다.

답변1

Perl 파일을 찾기 위해 할 수 있는 최선의 방법은 Perl 자체를 사용하여 판단하는 것입니다.펄 -c파일이 Perl이 아닌 대부분의 파일에 확실히 적용되는 올바른 Perl 코드가 아닌 경우 0이 아닌 종료 코드를 반환합니다. 불행하게도 잘못된 Perl 코드가 입력되면 동일한 작업을 수행하고 파일이 실제로 Perl 코드는 아니지만 마치 Perl 코드인 것처럼 오류 없이 구문 분석될 수 있으면 0을 반환합니다. 그러한 위험을 안고 살아갈 수 있다면 그 위험의 핵심은 다음과 같습니다.

for FILE in * ; do
   if perl -c "$FILE" >/dev/null ; then
      sed -i -e '1i#!/usr/bin/perl' "$FILE"
   fi
done

참고: 일단 파일을 만지면 정말 심각한 이유가 없는 한 .pl 확장자를 추가합니다.

관련 정보