O utilitário grep
procura dentro de arquivos por linhas que correspondem a expressões regulares.
O que você (parece) deseja fazer é listar todos os arquivos no diretório atual que contenham 0
(zero) em seus nomes de arquivos e que tenha um sufixo de nome de arquivo de .jpg
. Para fazer isso, você usaria algo como
ls -l ./*0*.jpg
ou simplesmente
echo ./*0*.jpg
A primeira parte do padrão, *0*
, corresponderá a qualquer sequência que contenha um zero, enquanto a última parte do padrão, .jpg
, limitará os nomes de arquivos resultantes àqueles que terminarem com esse sufixo. O ./
significa "neste diretório" e só é realmente necessário se você tiver nomes de arquivos que começam com -
(traço) (estes poderiam ser mal interpretados como opções de linha de comando) ¹.
A expansão desse padrão é feita pelo shell antes de chamar ls
, portanto ls
obteria a lista expandida de nomes de arquivos que correspondem ao padrão e os listaria.
Observe que os padrões de globalização de nomes de arquivos não são expressões regulares (apenas semelhantes a eles). grep
, por outro lado, pega uma ou várias expressões regulares e procura por elas no conteúdo dos arquivos.
Respondendo a uma pergunta encontrada nos comentários : Um" aviso "é uma forma de saída de diagnóstico não fatal . O outro tipo é um "erro", que geralmente é fatal (ou seja, o programa não pode continuar como de costume e termina após a saída da mensagem de erro).
As mensagens de diagnóstico geralmente não são consideradas parte da saída padrão que um comando produz durante a operação normal e geralmente são produzidas em um "fluxo de saída" especial (no chamado "fluxo de erro padrão" em oposição a "saída padrão"). stream ") para que possa ser inspecionado separadamente, ou descartado, e para que não interfira com a saída ordinária do comando.
Neste caso, porém, grep
é incapaz de mostrar os dados que correspondem ao padrão, já que o arquivo é binário e os dados provavelmente não são imprimíveis, então ele notifica que havia uma correspondência no arquivo pela mensagem Binary file IMG_2125.jpg matches
(isso não é realmente uma mensagem de aviso de diagnóstico como mikeserv sugere ).
¹ Observe que, se alguns nomes de arquivos contiverem caracteres de barra invertida, algumas echo
implementações interpretariam as \n
, \b
... como seqüências de escape a serem expandidas.