O grep estaria bem?
grep -R matrixCal /location/of/your/code
Estou tentando listar todos os arquivos que incluem uma função, por exemplo, matrixCal
.
Como posso fazer isso no linux?
Você pode estar interessado no programa ack
. Ele é projetado especificamente para pesquisar por diretórios de código-fonte e retornar coisas úteis em um formato fácil de ler. Basicamente, faz o mesmo que grep
, mas num formato muito mais amigável.
A abordagem tradicional é criar um índice de definições de funções e variáveis para o seu código-fonte e usar seu editor para pesquisar este índice. O comando de indexação tradicional é chamado de ctags
e cria um arquivo chamado tags
que pode ser usado no vi. O Emacs vem com um etags
command semelhante (o arquivo é chamado TAGS
).
Por exemplo, para uma árvore de código-fonte C, veja como você pode gerar o arquivo TAGS
para o Emacs:
find -type f -name '*.[hc]' -exec etags {} +
Para uma grande árvore de fontes registrada no Subversion, aqui estão dois refinamentos: ignore .svn
diretórios e lide com hierarquias de arquivo que são tão longas que o limite de comprimento da linha de comando seria excedido (resultando em um arquivo truncado porque cada a invocação sucessiva de etags
iria reescrever o arquivo do zero).
: >TAGS
find -type d -name .svn -prune -o \
-type f -name '*.[hc]' -exec etags -a {} +
Em seguida, no Emacs, execute M-x visit-tags-table
uma vez e selecione o arquivo TAGS
. Coloque o cursor sobre a palavra matrixCal
e pressione M-.
( find-tag
) para pular para a definição (abrindo o arquivo contendo a definição, se necessário). Para iterar entre ocorrências, execute M-x tags-search
, digite ^matrixCal$
para ir para uma ocorrência e use M-,
( tags-loop-continue
) para ir para a próxima ocorrência. No TAGS
buffer, M-x occur RET matrixCal RET
fornecerá uma visão geral de onde o símbolo é usado.
Tags command-line find linux