Como selecionar arquivos específicos no grep

0

Eu tenho que grep uma string em um diretório que contém arquivos com o mesmo nome, exceto por horas:

ou seja,

  • nome_do_arquivo_01_WORD-1.log
  • nome_do_arquivo_02_WORD-1.log
  • nome_do_arquivo_03_WORD-1.log
  • nome_do_arquivo_04_WORD-1.log
  • nome_do_arquivo_05_WORD-1.log
  • ...
  • nome_do_arquivo_23_WORD-1.log
  • nome_do_arquivo_24_WORD-1.log

Estou tentando usar uma única palavra 'ABC' em apenas arquivos entre 18 e 23 horas.

Eu tentei com grep 'ABC' filename_[18-19-20-21-22-23]*WORD*.log , mas ele é expandido como grep em arquivos de 05 a 23 e não sei por quê.

Como posso conseguir isso?

    
por Antonio Calì 03.02.2017 / 14:29

1 resposta

4

Use a expansão de chaves:

grep ABC filename_{18,19,20,21,22,23}_WORD*.log

ou mais compactamente

grep ABC filename_{18..23}_WORD*.log

A forma como você o escreveu diz ao shell para considerar qualquer arquivo que comece com filename_ , seguido por um único caractere correspondente ao conjunto 1 , 8 to 1 (que não corresponde qualquer coisa), 9 a 2 (da mesma forma), 0 a 2 , 1 a 2 , 2 a 2 ou 3 (então, no final, 0 , 1 , 2 ou 3 ), seguido por qualquer caractere, seguido por WORD etc.

    
por 03.02.2017 / 14:33

Tags