Unix / Linux: procura recursivamente por arquivos contendo uma string [duplicada]

2

Eu tenho uma hierarquia de diretórios de arquivos (alguns dos quais são texto plano e outros são binários).

Existe uma maneira fácil de pesquisar recursivamente a hierarquia de arquivos e diretórios para os nomes de quaisquer arquivos que contenham uma string especificada e imprimir uma lista de "caminho para o nome do arquivo e o número da linha" se possível?

Basicamente, o que eu quero é mais ou menos o mesmo que o seguinte, exceto, talvez, com uma opção para imprimir os números de linha são impressos também:

#!/bin/bash
#
# Recursively search files for pattern specified as argument.
#

pattern="$1"

if [ -z "$pattern" ]; then echo "$0: Unspecified pattern."; exit; fi

searchfiles () {

  for filename in *; do

    if [ -f "$filename" ]; then {

      result='/bin/grep -e "$pattern" "$filename"'

      if ! [ -z "$result" ]; then echo "File: 'pwd'/$filename"; fi

    }

    elif [ -d "$filename" ]; then

      cd "$filename"

      searchfiles

      cd ..

    fi

  done

}

searchfiles

OK, como sugerido abaixo, eu poderia usar grep recursivo, mas eu só preciso do nome do arquivo e número da linha, já que a impressão do conteúdo pode ficar confusa se houver são muitas linhas longas que envolvem o terminal quando impressas, então aqui estava a minha solução:

grep -Rn index.php * | sed -e 's/ .*//g'

Atenciosamente,

John Goche

    
por John Goche 26.07.2012 / 11:13

1 resposta

4
grep -Rn "your_string" *

Deve fazer o truque.

    
por 26.07.2012 / 11:28

Tags