Ich versuche, das Installationsverzeichnis eines bestimmten Pakets zu finden. Ich habe ein bestimmtes Schlüsselwort, mit dem ich versuche, eine bestimmte Datei zu finden.
Während grep möchte ich nur den Dateityp cpp oder h einschließen . Ich möchte nicht, dass das grep Warnungen wie " Berechtigung verweigert" oder " Verzeichnis nicht gefunden" anzeigt . Ich möchte nur, dass passende Dateien angezeigt werden, sonst nichts. Bitte schlagen Sie vor, wie ich das machen kann.
Zur Zeit benutze ich
grep "My term" -ir --exclude-dir="\.svn" --include=*.{cpp,h} ./
find . 2>/dev/null | grep 404.html
Sie können die Warnungen nicht nur filtern, sondern auch deaktivieren, indem Sie Folgendes hinzufügen
-s
:Es gibt einige Kompatibilitätsprobleme mit dieser Option. Dies sollte jedoch kein Problem für den persönlichen Gebrauch sein.
quelle
Früher bekam ich eine Menge nerviger Nachrichten wie diese:
Der Grund ist, dass das
--directories
Flag standardmäßig auf gesetzt istread
. Ich habe es geändert zurecurse
; Wenn Sie nicht möchten, dass es automatisch eine rekursive Suche durchführt, können Sieskip
stattdessen verwenden.Der einfachste Weg, dies zu tun, besteht darin, es in einer Umgebungsvariablen zu setzen. In
~/.bash_profile
oder~/.bashrc
abhängig von Ihrer Distribution:Jetzt werden diese Nachrichten bei jeder Verwendung von grep automatisch unterdrückt.
Eine weitere Option ist die
--no-messages
Kurzform flag-s
. Dadurch werden auch dieIs a directory
Nachrichten entfernt, es werden jedoch auch andere Nachrichten unterdrückt, die möglicherweise nützlicher sind. Wenn Sie beispielsweise eine verschachtelte Suche durchführen*/*/*
und keine solche Datei mit diesem Muster vorhanden ist, wird Ihnen dies nicht mitgeteilt.quelle
Ein alternativer Ansatz, anstatt
grep
rekursiv mit-ir
zu arbeiten, besteht darin, denfind
Befehl (der standardmäßig rekursiv ist) die Berechtigungen mit-readable
Flag und Pfad behandeln zu lassen, um sie mit-not -path "*.svn*"
Flags auszuschließen , und die Datei dann an zu übergebengrep
. Das Ausschließen von Verzeichnissen erfolgt über,-type f
um nur normale Dateien zu finden.quelle
Bei der rekursiven Suche in bestimmten Dateien ist die Verwendung von viel besser
ack-grep
. Die Syntax hier wäre:Um die Berechtigungsfehlermeldungen zu entfernen, möchten Sie möglicherweise denselben Befehl ausführen mit
sudo
:Wenn Sie jedoch nach installierten Paketen suchen möchten, sehen Sie sich diese verschiedenen Optionen an: https://www.google.com/search?q=ubuntu%20search%20inside%20installed%20packages
quelle