J'essaie de trouver le répertoire d'installation d'un paquet particulier. J'ai un certain mot-clé à l'aide duquel j'essaie de trouver un fichier particulier.
Pendant grep, je souhaite uniquement inclure le type de fichier cpp ou h . Je ne veux pas que le grep affiche des avertissements tels que Autorisation refusée ou Impossible de trouver le répertoire . Je veux juste qu'il affiche les fichiers correspondants, rien d'autre. S'il vous plaît suggérer comment puis-je faire cela?
J'utilise actuellement
grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
find . 2>/dev/null | grep 404.html
c'est à quoi ressemblerait une commandePlus directement que le filtrage des avertissements, vous pouvez les désactiver en ajoutant
-s
:Il y a quelques problèmes de compatibilité avec cette option. Cependant, cela ne devrait pas être un problème pour un usage personnel.
la source
J'avais l'habitude de recevoir une tonne de messages ennuyeux comme celui-ci:
La raison en est que le
--directories
drapeau est paramétré par défautread
. Je l'ai changé pourrecurse
; si vous ne voulez pas qu'il fasse automatiquement une recherche récursive, vous pouvez utiliser à laskip
place.Le moyen le plus simple de gérer cela en permanence est de le définir dans une variable d'environnement. Dans
~/.bash_profile
ou~/.bashrc
selon votre distribution:Maintenant, il supprime automatiquement ces messages chaque fois que j'utilise grep.
Une autre option est le
--no-messages
drapeau, en abrégé-s
. Cela éliminera également lesIs a directory
messages, mais supprimera également les autres messages qui pourraient être plus utiles. Par exemple, si vous effectuez une recherche imbriquée*/*/*
et qu'aucun fichier de ce type n'existe, cela ne vous le dira pas.la source
Une approche alternative au lieu de procéder de
grep
manière récursive-ir
serait de laisser lafind
commande (qui est récursive par défaut) de gérer les autorisations avec-readable
indicateur et le chemin à exclure avec-not -path "*.svn*"
indicateurs, puis de transmettre le fichier àgrep
. L'exclusion de répertoires est effectuée via-type f
pour ne rechercher que des fichiers normaux.la source
Lorsque vous effectuez des recherches récursives dans des fichiers spécifiques, il vaut mieux utiliser
ack-grep
. La syntaxe serait la suivante:Pour supprimer les messages d'erreur d'autorisation, vous pouvez exécuter la même commande avec
sudo
:Toutefois, si vous souhaitez rechercher des packages installés, examinez ces différentes options: https://www.google.com/search?q=ubuntu%20search%20inside%20installed%20packages.
la source