precisa procurar algo em todo o conteúdo
Eu estou tentando:
find . | xargs grep word
Eu recebo erro:
xargs: cotação não terminada
Como conseguir isso?
xargs
espera entrada em um formato que nenhum outro comando produz, por isso é difícil de usar com eficiência. O que está errado aqui é que você tem um arquivo cujo nome deve ser citado na entrada de xargs
(provavelmente contendo a '
).
Se o seu grep suportar a opção -r
ou -R
para pesquisa recursiva, use-a.
grep -r word .
Caso contrário, use o -exec
primário de find
. Essa é a maneira usual de obter o mesmo efeito que xargs
, exceto sem restrições nos nomes dos arquivos. Versões razoavelmente recentes do find
permitem agrupar vários arquivos em uma única chamada para o comando auxiliar. Passar /dev/null
para grep
garante que ele mostrará o nome do arquivo na frente de cada correspondência, mesmo que seja chamado em um único arquivo.
find . -type f -exec grep word /dev/null {} +
As versões mais antigas do find
(em sistemas mais antigos ou no OpenBSD, ou em utilitários reduzidos como o BusyBox) só podem chamar o comando auxiliar em um arquivo por vez.
find . -type f -exec grep word /dev/null {} \;
Algumas versões find
e xargs
têm extensões que permitem a comunicação correta, usando caracteres nulos para separar nomes de arquivos, para que nenhuma citação seja necessária. Hoje em dia, apenas o OpenBSD possui esse recurso sem ter -exec … {} +
.
find . -type f -print0 | xargs -0 grep word /dev/null
/dev/null
. É um incômodo quando o formato de saída pode variar, dependendo de quantos arquivos são correspondidos ... obrigado.Eu acho que você quer dizer a primeira opção
grep recursivo, para pesquisar conteúdo dentro de arquivos
É recursivo, para pesquisar arquivos que correspondam
fonte
Se você possui as ferramentas GNU (o que você faz se a tag Linux for precisa), poderá usar
-print0
e-0
solucionar os problemas comuns de cotação:fonte
Também ack , ele foi projetado para pular diretórios especiais como
.svn
,.git
e tal. É uma ferramenta diária para desenvolvedores.É bem perto do grep para os switches comuns.
Ex. :
Pacote
ack-grep
sobre curtidas debian e debian.fonte
No diretório atual, você pode usar o grep:
fonte
Eu acho que você quer encontrar uma string nos arquivos
Experimentar
find . -name "*" | xargs grep -l "string"
fonte