Obter 'less' para exibir o nome do arquivo

3

Algo que pareceu bastante útil para mim ao procurar por um determinado var em vários arquivos de configuração:

less * | grep some_var

Portanto, isso retorna o valor de some_var sem procurar manualmente em todos os arquivos de configuração. Agradável! Mas e se eu não quisesse saber apenas o valor de some_var e quisesse mudá-lo? Em qual arquivo ele está? Como obtenho o comando less (ou grep , ou outro comando) para exibir o var e em qual arquivo ele foi encontrado?

Pesquisei a página do manual, mas não encontrei nenhuma opção adequada ...

    
por kasimir 17.06.2013 / 19:43

2 respostas

7

Por que canalizar less em alguma coisa? Isso transforma em cat . A resposta óbvia é

grep some_var * | less

Você receberá a saída do formulário

filename:this line contains some_var somewhere

Se você passar a opção -n para grep , também receberá números de linha:

filename:42:this line contains some_var somewhere

Muitos editores têm alguma forma de pesquisa de arquivos integrada, com os resultados da pesquisa aparecendo em uma janela onde você pode selecionar uma linha para abrir o arquivo correspondente no local correspondente. No Emacs, execute M-x grep ou uma de suas variantes. No Vim, execute :grep ou uma de suas variantes.

    
por 17.06.2013 / 19:52
5

less não se destina realmente a fazer o que você está tentando fazer; é para exibir arquivos de texto longos em um formato paginado.

grep permite que um arquivo ou lista de arquivos sejam passados como um argumento de linha de comando, então você pode simplesmente fazer

grep -H some_var *

que lhe dará uma saída assim porque a opção -H prefixará o nome para o resultado:

filename: some_var blah blah

Se você ainda quiser canalizá-lo em less para poder rolar por ele, é possível fazer isso.

grep -H some_var * | less

Outra recomendação para percorrer vários arquivos é ack ou ack-grep , como é conhecido nos sistemas Debian. Ele foi projetado para pesquisar árvores de origem rapidamente, ignorando arquivos binários e também requer menos pressionamentos de tecla para realizar pesquisas semelhantes.

    
por 17.06.2013 / 19:53