Estou tentando encontrar o diretório de instalação de um pacote específico. Eu tenho uma determinada palavra-chave usando a qual estou tentando encontrar um arquivo específico.
Durante o grep, quero incluir apenas o tipo de arquivo cpp ou h . Eu não quero que o grep mostre avisos como Permissão Negada ou Não foi possível encontrar o Diretório . Eu só quero que ele exiba arquivos correspondentes, nada mais. Por favor, sugira como posso fazer isso?
No momento estou usando
grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
find . 2>/dev/null | grep 404.html
é o que um comando seriaMais diretamente do que filtrar os avisos, você pode desativá-los adicionando
-s
:Existem alguns problemas de compatibilidade com esta opção. No entanto, isso não deve ser um problema para uso pessoal.
fonte
Eu costumava receber uma tonelada de mensagens irritantes como esta:
O motivo é que o
--directories
sinalizador é o padrãoread
. Eu mudei pararecurse
; se você não quiser que ele faça automaticamente uma pesquisa recursiva, use-oskip
.A maneira mais fácil de lidar com isso o tempo todo é configurá-lo em uma variável de ambiente. Em
~/.bash_profile
ou~/.bashrc
dependendo da sua distribuição:Agora, suprime automaticamente essas mensagens sempre que eu uso grep.
Outra opção é a
--no-messages
bandeira, taquigrafia-s
. Isso também livra asIs a directory
mensagens, mas também suprime outras mensagens que podem ser mais úteis. Por exemplo, se você estiver fazendo uma pesquisa aninhada*/*/*
e não existir esse arquivo desse padrão, ele não informará isso.fonte
Uma abordagem alternativa, em vez de
grep
recursivamente,-ir
seria permitir que ofind
comando (que é recursivo por padrão) manipule as permissões com-readable
sinalizador e caminho para excluir com-not -path "*.svn*"
sinalizadores e depois passe o arquivo paragrep
. A exclusão de diretórios é feita via-type f
para encontrar apenas arquivos regulares.fonte
Ao fazer pesquisas recursivas em arquivos específicos, é muito melhor usá-lo
ack-grep
. A sintaxe aqui seria:Para remover as mensagens de erro de permissão, convém executar o mesmo comando com
sudo
:Mas, eventualmente, se você deseja pesquisar pacotes instalados, consulte as várias opções: https://www.google.com/search?q=ubuntu%20search%20inside%20installed%20packages
fonte