La search récursive ne fonctionne pas pour grep sur solaris

Sur mon server Solaris, je trouve que grep -r ne fonctionne pas, ce qui est la façon habituelle d'utiliser grep . Il semble que egrep ait le même comportement.

Étant donné que je n'ai aucun contrôle sur la machine, y a-t-il un moyen d'avoir grep effectuer une search récursive? Ou dois-je canaliser la sortie de find dans grep ?

Je ne connais pas Solaris, mais si vous passez de GNU / Linux à Solaris, la plupart des commands se comporteront légèrement différemment. La version GNU des outils Unix comporte des fonctionnalités supplémentaires manquantes dans les Unix "propriétaires".

Vous pouvez download GNU grep (s) ici, puis comstackr et installer.

Si vous avez un access root, vous voudrez peut-être exécuter configure –prefix = / usr / local De telle sorte que les utilitaires s'installent dans / usr / local

Si vous n'avez pas d'access root, vous pouvez exécuter configure –prefix = $ {HOME} Pour que les utilitaires s'installent dans votre directory personnel

Si vous voulez utiliser find , ce serait le moyen le plus rapide:

 find . -type f -exec grep pattern {} + 

Cependant, grep Gnu est très probablement déjà installé sur votre machine.

Il fait partie de l'installation par défaut sur Solaris 11 dans /usr/gnu/bin/grep . Idem pour Solaris 10 où vous le trouvez dans /usr/sfw/bin/ggrep . Sur les anciennes versions, il a peut-être été installé à partir de sunfreeware ou d'autres référentiels, vérifiez /usr/local/bin/grep et /opt/csw/bin/grep pour les locations communs.

Utilisez ggrep à la place s'il est installé.

Par exemple, searchz "mysearchssortingng" dans le directory courant dans tous les sous-directorys ( -R ) et affichez le nom et le path des correspondances ( -H ) et ignorez les files binarys ( -I ). N'oubliez pas le * à la fin de la command.

 /usr/sfw/bin/ggrep -H -R -I "mysearchssortingng" * 

ggrep se trouve dans /usr/sfw/bin Vous pouvez l'append à votre profil avec une command EXPORT pour pouvoir l'appeler directement depuis la command line.

 PATH=$PATH:/usr/sfw/bin export PATH 

Version Solaris: SunOS 5.10 Generic_147440-13 sun4u sparc SUNW, SPARC-Enterprise

Téléchargez le script autonome perl de http://betterthangrep.com/ , mettez-le dans votre $HOME/bin , et apprenez à l'utiliser à la place. Je trouve que c'est, comme annoncé, mieux que grep pour de nombreuses utilisations dans mon travail de développement quotidien.

Solaris grep n'a pas l'option -r .

Vous pouvez utiliser la command suivante.

 find . -type f | xargs grep 'sometext' 

Oui, vous aurez besoin du grep GNU. Personnellement, je ne manque pas le drapeau «-r» parce que vous pouvez faire la même chose avec une combinaison de find et de grep mais cela callbackle que disposer des outils GNU disponibles sur votre boîte Solaris est ce que je considère comme une bonne pratique. Alors nous y voilà:

Je ne voudrais pas download le code source de différents endroits sur Internet et ensuite vous build. Ce n'est pas nécessaire. Si vous voulez simplement que votre Solaris dispose des outils GNU typiques, procédez comme suit:

Si vous utilisez Solaris 10, vous devriez get le disque compagnon Solaris 10. Cela avait l'habitude d'être dissortingbué par Sun mais il vit maintenant ici . Personnellement, je le ferais un habbit toujours installer le contenu de ce disque ou au less les parties les plus importantes de GNU. Faites-en partie de votre JumpStart (ou de ce que vous utilisez) pour les nouveaux servers de votre organisation!

Si vous êtes sous Solaris 11, la vie est beaucoup plus simple. Les outils GNU sont généralement installés par défaut mais ne sont pas tous propagés dans les zones locales. IFS, le système d'empackageage de Solaris 11, vous simplifie grandement la vie et vous emmène directement sur Solaris 11 (pour beaucoup d'autres raisons). La list des packages que vous devriez toujours considérer comme disponibles pour n'importe quelle zone sont les suivants:

 pkg: // solaris / archiver / gnu-tar
 pkg: // solaris / développeur / gnu-binutils
 pkg: // solaris / diagnostic / top
 pkg: // solaris / file / gnu-coreutils
 pkg: // solaris / file / gnu-findutils
 pkg: // solaris / text / gawk
 pkg: // solaris / text / gnu-diffutils
 pkg: // solaris / text / gnu-grep
 pkg: // solaris / text / gnu-sed

et si vous utilisez l'hôte à des fins de développement / construction, vous pouvez append:

 pkg: // solaris / développeur / build / gnu-make
 pkg: // solaris / développeur / build / make
 pkg: // solaris / développeur / gcc-45
 pkg: // solaris / system / header
 pkg: // solaris / développeur / build / autoconf
 pkg: // solaris / développeur / build / automake-110

Personnellement, je ferais partie de l'installation par défaut de mon entreprise pour les nouveaux servers / zones (potentiellement less les outils de développement). Les administrateurs système de Solaris insistent souvent pour être différents du monde Linux, mais il n'y a vraiment pas besoin de. Faites-le et faites-le partie de votre installation par défaut. Vous ne le regretterez pas.