지정된 콘텐츠가 포함된 지정된 파일이 포함된 디렉터리를 나열하는 방법은 무엇입니까?

지정된 콘텐츠가 포함된 지정된 파일이 포함된 디렉터리를 나열하는 방법은 무엇입니까?

수백 개의 디렉토리가 있고 각 디렉토리에는 report.ext다음과 같은 한 줄을 포함할 수 있는 이름의 파일이 있습니다.

Beta score for best model 95.35

파일이 존재하고 해당 행이 포함되어 있으며 해당 행에 95보다 큰 값이 포함된 디렉터리 목록을 가져오고 싶습니다.

명령줄 도구를 통해 이를 달성할 수 있습니까?

답변1

가장 간단한 방법은 이러한 파일을 찾아 내용이 일치하면 상위 디렉터리를 인쇄하는 것입니다. 예를 들어:

find . -name report.ext -type f -exec awk '
   /^Beta score for best model [0-9.]+$/ && $NF > 95 {
     dir = FILENAME
     sub("/[^/]*$", "", dir)
     print dir
     nextfile
   }' {} +

awk구현이 이것을 지원하지 않는 경우 nextfile파일에서 이러한 행이 나타날 때마다 디렉토리 이름이 인쇄됩니다.

관련 정보