dateien durchsuchen mit grep

B

Blade

Doppel-As
hy

ich soll alle dateien im verz /etc mit der endung .conf und in unterverzeichnissen begriffe mit smb raussuchen und die namen der dateien anzeigen, die fehlermeldungen sollen in die datei fehler.log geschrieben werden

ich wollte es jetzt so machen

Code:
PHP:
grep -il * .conf | grep -il * smb 2>/fehler.log


eber er will nicht so, habt ihr noch eventuel eine ideeman das machen könnte?
 
Was Du machen moechtest, erreichst Du mit
Code:
grep -il smb *.conf 2> /fehler.log
In Deiner Befehlskette sind mehrere Fehler:
1.) Bei grep kommt erst das Suchwort, dann die zu durchsuchenden Dateien
2.) Falls Du die von grep gefundenen Dateien an einen anderen Befehl weitergeben moechtest (was in Deinem Fall nicht notwendig ist), muesstest Du das mit
Code:
grep -il "zweiter Wort" $(grep -il "erstes Wort" *)
machen.

Ach ja, wenn Du auch Unterverzeichnisse miteinbeziehen moechtest, kannst Du das grep mit der Option '-r' mitteilen.
 
Zuletzt bearbeitet:
Code:
find /etc -maxdepth 1 -iregex '.*conf$' -exec grep -il "smb" {} \; 2> /fehler.log
grep -irl /etc/ -iregex '.*smb.*' \; 2>> /fehler.log

Aber was für Fehler sollen da auftreten?
 
super danke

Aber was für Fehler sollen da auftreten?

das ist nur als übung gedacht habe ich hier in einem buch das wenn fehler auftreten das ich weis wie ich sie umleiten muss

danke noch ma
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Was Du machen moechtest, erreichst Du mit

Code:
grep -il smb *.conf 2> /fehler.log

ach eins noch wenn ich mich unter dem etc verzeichnis befinde und die smb dateien in den unterverzeichnissen suchen möchte und die .conf dateien im etc verzeichnis

dann müsste ich das doch so machen

PHP:
grep -il .conf *etc | grep -ir smb *etc 2> fehler.log
 
Zuletzt bearbeitet:
Nein, du kannst grep nicht an ein grep weiter pipen, das macht so keine Sinn.
 
wieso macht das keinen sinn? wenn ich doch noch alle smb dateien die in den unterverzeichnissen stecken sehen will
 
Wenn Du Dateinamen per pipe an grep weitergibst, fasst es das nicht mehr als Dateinamen sondern als den Text, den es durchsuchen soll, auf, auch wenn dieser aus Dateinamen besteht. Deswegen geht es so nicht.
 
Hallo
Du kannst zwar die Ausgabe von grep an grep weiterreichen (pipen), um z.B. die Suchkriterien zu verfeinern. Allerdings erwartet grep die Eingabe über STDIN nur, wenn kein Filehandle übergeben wird.

In deinem Fall kannst du deine beiden Befehle mit && verküpfen und die Ausgabe beider kanalisieren.
Du kannst die Befehle auch einfach hintereinander ausführen (eventuell via Klammer in der gleichen Subshell ausführen) und die Fehlerausgabe an die gleiche Datei anfügen.


Gruß Wolfgang
 
ha als habe es mit

grep -il .conf *etc && grep -ir smb *etc 2>fehler.log

ausprobiert so geht es aber garnicht, zumindest seh ich nichts! es kommt auch keine fehlermeldung
 
ha als habe es mit

grep -il .conf *etc && grep -ir smb *etc 2>fehler.log

ausprobiert so geht es aber garnicht, zumindest seh ich nichts! es kommt auch keine fehlermeldung
Gewöhn dir bitte an den Suchstring in " " zu setzen, sonst ist das Ergebnis nicht immer das was du willst.
Dein Versuch soll also was suchen?

Wenn du das Redirect auf STDERR (2) nur einmal setzen willst, dann klammer die beiden Befehle. Alternativ kannst du für jedes grep STDERR auf eine Datei setzen, beim zweiten grep halt durch Anfügen (2>>Datei).

Die Syntax für grep:
grep [OPTIONEN] "PATTERN" FILEHANDLE(S)



Schau dir nochmal genau die Manpage dazu an.

Auch die PFADEXPANSION der SHELL solltest du dir nochmal ansehen.
Um z.B. alle Dateien im /etc anzusprechen
/etc/*

Gruß Wolfgang
.
 
ah ich glaube ich habe es kapiert!
bin jetzt hin und hab einfach

"grep -il .cont*etc>>test1.log | grep -ir smb *etc>>test1.log 2>>fehler.log"

angegeben so bekomm ich das ergebnis in einer datei ausgegeben und und kann mit >> immer die abtuellere datei anhängen.

guck mir die anderen sachen aber trotzdem noch mal an

danke
 

Ähnliche Themen

Queue für copy Script

mittels if abfrage datei nach variabelnwert durchsuchen

GUbutnu 14.04 LTS DualMonitor-Mode: Ubuntu merkt sich die Bildschirmpositionen nicht

Fedora: easyLife produzierte mehr Probleme als Lösungen

Script zum Bereinigen von Dateien mit Unterverzeichnissen (Schadcode löschen) eilt

Zurück
Oben