Como listar diretórios com o arquivo especificado neles especificou o conteúdo?

1

Eu tenho centenas de diretórios, dentro de cada um deles há um arquivo com o nome report.ext e esse arquivo pode conter uma linha como

Beta score for best model 95.35

Eu gostaria de obter uma lista de diretórios, onde este arquivo existe, onde ele contém tal linha e onde esta linha contém um valor maior que 95.

Isso é possível a partir de ferramentas de linha de comando?

    
por Dims 03.08.2017 / 15:12

1 resposta

4

O mais fácil é procurar por esses arquivos e imprimir seu diretório pai se o conteúdo deles corresponder. Por exemplo, com algo como:

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

Se a sua implementação de awk não suportar nextfile , isso imprimiria o nome do diretório para cada ocorrência dessas linhas no arquivo.

    
por 03.08.2017 / 15:16