[ad_1]
grep
é um utilitário Linux para procurar arquivos de texto. Por padrão, ele imprimirá os resultados da pesquisa, mas também pode ser usado para corresponder e imprimir os nomes dos arquivos que contêm o resultado da pesquisa, o que pode ser útil ao conectar-se a outros scripts.
Usando grep para imprimir nomes de arquivos
grep
é comumente usado em conjunto com outros comandos em scripts bash como um utilitário geral de pesquisa de texto. No entanto, por padrão, ele não imprime nada acima dos nomes dos arquivos, que você pode precisar se estiver passando a saída para outro utilitário.
Se você quiser uma lista de arquivos correspondentes, você pode usar grep
com ele -l
bandeira, que listará os nomes dos arquivos em vez de corresponder:
grep -l foo ./*
Isso é semelhante a -H
flag, que irá gerar uma resposta contendo o nome do arquivo seguido pela linha correspondente. No entanto, com -l
vai a só imprime o nome do arquivo, fornecendo uma lista de arquivos que contêm a string de pesquisa.
Você também pode usar um letra maiúscula -L
bandeira para fazer o contrário: imprima todos os arquivos que não contenham a string correspondente.
grep -L baz ./*
Caminho do arquivo de corte
Por padrão, o -l
sinalizador imprimirá arquivos com um caminho de arquivo relativo anexado. Se você deseja apenas o nome real do arquivo, pode cortar o caminho do arquivo usando o basename
Utilitário. Isso exigirá que a entrada seja passada xargs
mas funciona muito bem:
grep -l foo ./* | xargs -L 1 basename
Tenha isso em mente grep -r
irá pesquisar recursivamente, e se você usá-lo com basename
a resposta pode conter arquivos com caminhos recortados que não estão diretamente no atual.
Usando grep com o comando find
grep
também funciona bem com o utilitário de pesquisa adicional do find
domínio. Por exemplo, você pode usá-lo com o find
Comando para encontrar todos os arquivos de texto em um diretório e executar facilmente um grep
procurar:
find . -iname "*txt" -exec grep foo {} ;
Ou use com -l
sinalizador para listar nomes de arquivos:
find . -iname "*txt" -exec grep -lH foo {} ;
[ad_2]