Digamos que eu preciso encontrar a função GetTypes()
em todo o arquivo de origem C # ( .cs
) nos diretórios / subdiretórios.
Eu usei grep -rn GetTypes *.cs
, mas recebi um erro com grep: *.cs: No such file or directory
. Eu tive que usar grep -rn GetTypes *
, mas neste caso, mostra todos os arquivos não *.cs
apenas.
Qual comando eu preciso usar para encontrar a string apenas nos .cs
arquivos?
Respostas:
Se o seu shell for bash ≥4, coloque o
shopt -s globstar
seu~/.bashrc
. Se seu shell é zsh, você é bom. Então você pode correr**/*.cs
significa todos os arquivos correspondentes*.cs
no diretório atual ou em seus subdiretórios, recursivamente.Se você não está executando um shell que suporta,
**
mas o grep suporta--include
, você pode executar um grep recursivo e dizergrep
para considerar apenas os arquivos que correspondem a determinados padrões. Observe as aspas ao redor do padrão de nome de arquivo: ele é interpretado por grep, não pelo shell.Com apenas ferramentas portáteis (alguns sistemas não possuem
grep -r
), usefind
para a parte transversal do diretório egrep
para a parte de pesquisa de texto.fonte
globstar
opção para uma corrente Bash 4+ shell, use:shopt -s globstar
.Você deve verificar a pequena substituição grep / find conhecida como
ack
. É especificamente configurado para pesquisar diretórios de arquivos de código-fonte.Seu comando ficaria assim:
fonte
Se você usa o GNU
grep
, pode especificar quais arquivos incluir em um percurso de diretório recursivo:(em que o último período denota o diretório de trabalho atual como raiz do percurso)
fonte
Estou usando uma combinação de find e grep:
Para
find
, você pode substituir.
por um diretório e remover-name
se desejar procurar em todos os arquivos.Para
grep
,-bn
imprimirá a posição e o número da linha e--color
ajudará seus olhos destacando o que você está procurando.fonte