No nosso servidor Solaris, acho que grep -r
isso não funciona, que é a maneira usual que uso grep
. Parece que egrep
tem o mesmo comportamento.
Como não tenho controle sobre a máquina, existe uma maneira de grep
executar uma pesquisa recursiva? Ou preciso canalizar a saída find
para grep
?
Respostas:
Eu não estou familiarizado com o Solaris, mas se você estiver alternando do GNU / linux para Solaris, verá que a maioria dos comandos se comportará um pouco diferente. A versão GNU das ferramentas Unix tem recursos adicionais ausentes nos Unixes "proprietários".
Você pode fazer o download do GNU grep (s) aqui e compilar e instalar.
Se você tiver acesso root, poderá executar configure --prefix = / usr / local Para que os utilitários sejam instalados em / usr / local
Se você não tiver acesso root, poderá executar o configure --prefix = $ {HOME} para que os utilitários sejam instalados no diretório inicial
fonte
--prefix=${HOME}}/.local
é provavelmente mais aconselhável ... não há necessidade de encher o diretório home comshare
elib
pastasshare
? Deve ser um diretório de lixo eletrônico!"rm -rf
Doh!Se você deseja usar
find
, esta seria a maneira mais rápida:No entanto, o Gnu grep provavelmente já está instalado na sua máquina.
Faz parte da instalação padrão no Solaris 11 in
/usr/gnu/bin/grep
. O mesmo para o Solaris 10, onde você o encontra/usr/sfw/bin/ggrep
. Em versões mais antigas, pode ter sido instalado a partir do sunfreeware ou de outros repositórios, verifique/usr/local/bin/grep
e/opt/csw/bin/grep
localizações comuns.fonte
-name
opção comfind
.-name
não pesquisará dentro dos arquivos, apenas pesquisará os nomes dos arquivos, que não é o que o OP solicita.Use o ggrep, se estiver instalado.
Por exemplo, pesquise "mysearchstring" do diretório atual até todos os subdiretórios (
-R
) e mostre o nome e o caminho do arquivo para correspondências (-H
) e ignore os arquivos binários (-I
). Não se esqueça*
do final do comando.O ggrep está localizado em
/usr/sfw/bin
Você pode adicioná-lo ao seu perfil com um comando EXPORT, para que você possa chamá-lo diretamente da linha de comando.Versão Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise
fonte
ggrep
é de fato o GNU grep. Obrigado!Faça o download do
ack
script perl independente em http://betterthangrep.com/ , coloque-o no seu$HOME/bin
e aprenda a usá-lo. Acho que é, como anunciado, melhor do que o grep para muitos usos no meu trabalho diário de desenvolvimento.fonte
O Solaris grep não tem
-r
opção.Você pode usar o seguinte comando.
fonte
find /opt/ -name "*.sh" -type f | xargs grep "start"
Sim, você precisará do GNU grep. Pessoalmente eu não perca a bandeira "-r" porque você pode fazer o mesmo com uma combinação de
find
egrep
mas lembra que ter as ferramentas GNU disponíveis na sua caixa de Solaris é o que eu considero a melhor prática. Aqui vamos nos:Eu não faria o download do código-fonte de vários lugares da Internet e depois construí-lo. Isso não é necessário. Se você simplesmente deseja que seu Solaris tenha as ferramentas típicas GNU disponíveis, faça o seguinte:
Se você estiver no Solaris 10, deverá obter o Solaris 10 Companion Disk. Isso costumava ser distribuído pela Sun, mas agora mora aqui . Pessoalmente, eu faria um habbit sempre instalar o conteúdo deste disco ou pelo menos as partes mais importantes do GNU. Faça parte do seu JumpStart (ou o que você usar) para novos servidores em sua organização!
Se você usa o Solaris 11, a vida é muito mais simples. As ferramentas GNU são normalmente instaladas por padrão, mas nem todas são propagadas para zonas locais. O IFS, o sistema de empacotamento no Solaris 11, facilita muito a sua vida, então você realmente deve mudar para o Solaris 11 (muitos outros motivos também). A lista de pacotes que você deve considerar sempre disponíveis para qualquer zona é:
e se você usar o host para fins de desenvolvimento / construção, poderá adicionar:
Pessoalmente, eu faria o acima (potencialmente menos as ferramentas de desenvolvimento) parte da instalação padrão da minha empresa para novos servidores / zonas. Os administradores de sistema Solaris geralmente insistem em ser diferentes do mundo Linux, mas não há realmente nenhuma necessidade. Faça isso e faça parte da sua instalação padrão. Você não vai se arrepender.
fonte