GEEKS

Como mostrar apenas nomes de arquivos com grep no Linux

Como mostrar apenas nomes de arquivos com grep no Linux

grep é um utilitário Linux para pesquisar arquivos de texto. Por padrão, ele imprimirá os resultados da pesquisa, mas também pode ser usado para corresponder e imprimir nomes de arquivos que contenham o resultado da pesquisa, o que pode ser útil ao conectá-lo a outros scripts.



Usando grep para imprimir nomes de arquivos

grep é comumente usado junto 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 sobre os nomes dos arquivos, que você pode precisar se estiver passando a saída para outro utilitário.

Se você quiser uma lista dos arquivos correspondentes, você pode usar grep com o -l bandeira, que listará os nomes dos arquivos em vez da correspondência:

grep -l foo ./*

Isso é semelhante ao -H sinalizador, que produzirá uma resposta contendo o nome do arquivo seguido pela linha correspondente. No entanto, com -lserá imprima o nome do arquivo, fornecendo uma lista de arquivos que contêm a string de pesquisa.

Você também pode usar um maiúscula -L bandeira para fazer o inverso: imprima todos os arquivos que não contêm a string correspondente.

grep -L baz ./*

Cortando o caminho do arquivo

Por padrão, o -l sinalizador imprimirá arquivos com um caminho de arquivo relativo pré-anexado. Se você quiser apenas o nome actual do arquivo, você pode cortar o caminho do arquivo usando o basename Utilitário. Isso exigirá que a entrada seja passada xargsmas funciona muito bem:

grep -l foo ./* | xargs -L 1 basename

Tenha em mente que grep -r irá pesquisar recursivamente, e se você usar isso com basenamea resposta pode conter arquivos com caminhos aparados que não estão diretamente na corrente.

Usando grep com o comando in finding

grep também funciona bem com o utilitário de pesquisa additional do in finding comando. Por exemplo, você pode usá-lo com o in finding comando para pesquisar todos os arquivos de texto em um diretório e executar facilmente um grep procurar:

in finding . -iname "*txt" -exec grep foo  ;

Ou use com o -l sinalizador para listar nomes de arquivos:

in finding . -iname "*txt" -exec grep -lH foo  ;



Fonte da Notícia: www.howtogeek.com

Artigos relacionados

Botão Voltar ao topo