Localiza uma string específica em um diretório

1

Eu quero fazer o seguinte:

cat *.xml | grep some_string_here

Isso me diz se uma string específica existe em um arquivo xml em um diretório. Infelizmente isso não me diz qual arquivo.

como posso fazer isso melhor? O comando cat não me vê com um interruptor que adicione um prefixo de nome de arquivo à saída ...

    
por Sid Kshatriya 15.01.2011 / 18:25

4 respostas

7

cat é desnecessário (UUOC!) grep normalmente informará em qual arquivo a linha correspondente foi encontrada quando usada assim:

   grep some_string_here *.xml

Você também pode usar a opção -H para sempre:

   grep -H some_string_here *.xml
    
por 15.01.2011 / 18:30
2

Você precisa fazer:

grep some_string_here *.xml

, em seguida, o grep irá pré-anexar automaticamente o nome do arquivo a cada correspondência.

    
por 15.01.2011 / 18:29
2

Apenas use grep

grep some_string *.xml

A saída será algo como

a.xml: string containing some_string
xyzzy.xml:some_string in a different line

Se um arquivo contiver mais de uma ocorrência de some_string, cada ocorrência será impressa. Se você usa

grep -l some_string *.xml

apenas o nome do arquivo será impresso.

    
por 15.01.2011 / 19:05
0
grep some_string_here /dev/null *.xml

... é uma pequena melhoria em relação às outras sugestões acima, pois garante que o nome do arquivo que contém a correspondência seja sempre impresso, mesmo que o diretório atual contenha apenas um arquivo XML.

    
por 12.02.2012 / 16:49