2009-06-22 4 views
4

I this Syntax von user phi
Suppress finden & grep "kann nicht geöffnet werden" Ausgang

find . | awk '!/((\.jpeg)|(\.jpg)|(\.png))$/ {print $0;}' | xargs grep "B206" 

gegeben wurde, möchte ich die Ausgabe von grep zu unterdrücken: kann nicht geöffnet werden ..... und finden: Zeilen können nicht aus den Ergebnissen geöffnet werden.

Beispielausgabe ignoriert werden:

grep: can't open ./cisc/.xdbhist 
find: cannot open ./cisc/.ssh 

Antwort

12

Haben Sie versucht, stderr auf/dev/null umleiten?

Also leitet der obige Stream Nr. 2 (der stderr ist) um/dev/null um. Das hängt von der Shell ab, aber das obige sollte für die meisten funktionieren. Da find und grep unterschiedliche Prozesse sind, müssen Sie dies möglicherweise für beide tun oder (vielleicht) in einer Subshell ausführen. z.B.

find ... 2>/dev/null | xargs grep ... 2>/dev/null 

Here's ein Verweis auf einige Dokumentation zur Bash-Umleitung. Sofern Sie nicht csh verwenden, sollte dies für die meisten funktionieren.

+0

im ein wenig zögerlich zu unterdrücken, um es auszuprobieren .... was dies genau macht? es scheint einfach nicht so zu sein, als würde es tun, was ich brauche, aber das ist von einem 370 im Gespräch mit einem 9.733 – CheeseConQueso

+1

Es verursacht einfach alle Fehler an/dev/null gesendet werden, wo sie ignoriert werden. –

+1

Es macht die Annahme (die ich nicht überprüft habe, ich gestehe), dass Ihre Fehler oben auf STD err herauskommen. 2>/dev/null leitet Fehler auf/dev/null (ein Bin) auf die gleiche Weise um, wie (sagen wir) finde ...> /tmp/find.results würde std in eine Datei umleiten –