Grep recursivo no Solaris:
find . -name "*.[chix]" | xargs grep -i -n pattern_to_search
Como faço grep recursivo no Solaris?
Quando tentei, recebi este erro:
-r: invalid option.
Grep recursivo no Solaris:
find . -name "*.[chix]" | xargs grep -i -n pattern_to_search
find . | xargs grep whatsyrexpression
ou use cpan
para instalar o comando ack
.
-r para o grep funciona apenas com o gnu grep. Soluções com xargs são boas, mas causam alguns problemas - ache | xargs grep quebrará em nomes de arquivos com espaços, e além disso - xargs também é uma ferramenta gnu, então pode não estar instalada.
Até onde eu sei, a maneira correta de fazer isso em solaris é:
find . -type f -exec grep ... {} +
Além disso, observe que o solaris (well, unix) grep não tem (por exemplo) a opção -E, e você deve usar egrep
para ele.
Se você tiver sorte, você tem o gnu grep instalado também. Será então nomeado " ggrep ".
Geralmente, o ggrep está localizado em /usr/sfw/bin/ggrep
, se estiver instalado.
Use os -H -R -I
flags: -H
para mostrar o nome do arquivo, -R
para pesquisa recursiva, -I
para ignorar arquivos binários.
Exemplo: Mostrar todas as linhas em todos os arquivos, exceto arquivos binários, a partir desse diretório, incluindo todos os subdiretórios com a palavra "excel"
/usr/sfw/bin/ggrep -H -R -I "excel" *
find . -type f -exec grep hello {} /dev/null \;
Isso também funcionará para nomes de arquivos com espaços. Por que / dev / null? Porque cada instância do grep inspecionará um único arquivo por vez e, portanto, não imprimirá o nome do arquivo se encontrar uma correspondência. Tudo bem se você está realmente usando apenas um arquivo, mas não ajuda se o grep for repetidamente chamado de find. O arquivo / dev / null adicional serve como um arquivo extra fictício para procurar, de modo que o grep prefixará o nome do arquivo atual quando ele imprimir a linha correspondente.
Tags command-line grep solaris unix