Zuviele Datein für Grep

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
elias1234
Beiträge: 42
Registriert: 13.12.2005 15:29:16

Zuviele Datein für Grep

Beitrag von elias1234 » 18.09.2006 20:01:05

hiho,
mit welchem kommandozeilenprog kann ich wie mit grep nach dateien mit bestimmten inhalt suchen und mir diese anzeigen lassen wenn in einem ordner zuviele dateien für grep drin sind ?

thx
elias

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 18.09.2006 20:07:54

Code: Alles auswählen

grep -r "was du sucht" /ordner/mit/vielen/dateien/

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 18.09.2006 20:55:51

Das ist nicht zu lang für grep, sondern zu lang für die Shell.
"*" wird durch die Shell ersetzt, bevor das Programm aufgerufen wird.
In solchen Fällen kann

Code: Alles auswählen

echo * | xargs programm
helfen.
Markus' Lösung ist jedoch vorzuziehen.

Benutzeravatar
elias1234
Beiträge: 42
Registriert: 13.12.2005 15:29:16

Beitrag von elias1234 » 20.09.2006 23:32:26

hm..ich glaube ich hab mich falsch ausgedrückt oder ihr mich falsch verstanden

ich hab in einem ordner so dermaßen viele dateien dass ich auf den befehl

Code: Alles auswählen

grep -H 192.168.0.245 *
folgende fehlermeldung kriege

Code: Alles auswählen

-bash: /bin/grep: Die Argumentliste ist zu lang
wenn ich die anzahl der dateien halbiere (was ich aber eigenlich nicht will) dann funktioniert es

Benutzeravatar
esteel
Beiträge: 242
Registriert: 23.07.2002 11:06:25
Kontaktdaten:

Beitrag von esteel » 20.09.2006 23:40:35

Und alle beide Antworten waren korrekt!

Code: Alles auswählen

grep -H 192.168.0.245 -r .
um dein Beispiel nicht zu sehr zu verändern, funktioniert.. Wie bereits gesagt sind es zu viele Dateien.. das * wird von der Shell aufgelöst und die Shell kann nicht so viele Argumente an grep üergeben.
i support free software: http://www.fsfe.org/en/fellows/esteel
a great free and opensource FPS game: http://nexuiz.com

charno
Beiträge: 636
Registriert: 28.06.2004 20:24:34

Beitrag von charno » 20.09.2006 23:44:03

Hallo,

verwende

Code: Alles auswählen

grep -r -H 192.168.0.245 .
(ungetestet), das ist das gleiche wie markus_b sagt, auf den Ordner in dem du dich befindest.

Nehmen wir an, du willst im Ordner /var/log/squid nach der IP 192.168.0.245 suchen:

Code: Alles auswählen

cd /var/log/squid
grep -r -H 192.168.0.245 .
oder alternativ:

Code: Alles auswählen

grep -r -H 192.168.0.245 /var/log/squid
Gruss
Christof

PS: Achtung: In den Code-Blöchen hat es Punkte, die man fast nicht sieht (oder meine Blindheit nimmt zu)
"Wer sich nicht bewegt, spürt seine Fesseln nicht." - Rosa Luxemburg

Benutzeravatar
elias1234
Beiträge: 42
Registriert: 13.12.2005 15:29:16

Beitrag von elias1234 » 20.09.2006 23:50:05

aaah :D


mit

Code: Alles auswählen

echo * | xargs grep -H 192.168.0.245
funktionierts

viele dank und eine angenehme nachtruhe wünsch ich

Edit by Snoopy:
Code-Tags für die Leserlichkeit eingefügt.

Antworten