Eu quero procurar uma seqüência de texto em todos os arquivos em um diretório (e não em seus subdiretórios; sei que a -ropção faz isso, mas não é isso que eu quero).
Corrida
grep "string" /path/to/diré suposto ser capaz de fazer isso, eu li, mas isso me dá o erro:
grep: dir: é um diretório
Em seguida, tentei executar
grepem vários arquivos.grep "string" .bashrc .bash_aliasesfunciona perfeitamente.grep "string" .bash*funciona como pretendido também.grep "string" *me dá os erros:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
Apenas os erros são impressos, não recebo as linhas correspondentes. Eu tentei usar a -sopção, mas sem sucesso.
Então, minhas perguntas:
Por que não consigo usar
grepem um diretório, como em (1), quando devo fazê-lo? Eu já vi isso em vários exemplos na Internet.
Edit : Quando digo "usando grep em um diretório", quero dizer "pesquise em todos os arquivos desse diretório, exceto seus subdiretórios". Eu acredito que é isso que o grep faz quando você passa um diretório para ele no lugar de um arquivo. Estou incorreto?Por favor, me dê uma explicação sobre o funcionamento
grepque explicaria o comportamento dos comandos em (2).
Editar : Deixe-me ser mais específico. Por que o uso de curingas para especificar vários arquivos para procurar trabalho com.bash*e não com*ou mesmo./*?Como posso pesquisar todos os arquivos em um diretório (e não seus subdiretórios) usando
grep?
grep "string" .bash*.
grep "string" * .* 2>/dev/nullougrep -s "string" * .*
*, conhecido como globbing. Globbing não inclui nomes de arquivos que começam com um ponto.bashrccomo o padrão. Você pode definir opções de shell para incluir esses arquivos, mas poderá ficar um pouco confuso se não souber o que está fazendo. Um bom guia para a compreensão globing pode ser encontrada aqui mywiki.wooledge.org/glob