Sua expressão regular não significa o que você acha que faz. Ele combina todas as linhas iniciando (^) com um (1) zero repetido ou mais (*) vezes. Todas as strings correspondem à expressão regular. grep '^1'
faz o que você quer.
Eu tento procurar linhas que começam com "1" usando
ls -1 | grep ^1*
mas retorna linhas que não começam com 1. O que eu sinto falta aqui?
Você tentou o seguinte?
ls -1 | grep "^1"
Ou seja, remova o *
, que basicamente diz grep
, encontre zero ou mais ocorrências da expressão ^1
. Em outras palavras: combine as linhas que começam com 1 ou não.
Embora isso não responda à sua pergunta, essa é uma solução melhor para o que parece ser seu objetivo:
ls -ld 1*
Você pode usar um shell glob para listar todos os arquivos que começam com 1
. Note que *
tem um significado diferente no shell globbing do que expressões regulares.
^ 1. * corresponde à linha inteira, ou, como dito acima, ^ 1 obteve a string contida na linha.
diferentes estilos de regex usam diferentes símbolos representando chars, algumas opções especificam qual estilo você deseja. e opções diferentes especificam se você deseja corresponder a linha inteira, ou apenas parte dela, ou toda a entrada como uma cadeia de caracteres.
Tags grep regular-expression