On Die, Apr 10, 2001 at 02:47:28PM +0200, Matthias Fechner wrote: > Hi, sali,
> ich suche einen Inhalt in einer Datei. > Bis jetzt habe ich das immer mit folgenden Befehl gemacht: > find . -type f | xargs grep <suchstring> > > Aber jetzt bekomme ich folgende Fehlereldung zurueck: > xargs: unmatched single quote er findet ein file mit ' drin. dann wird der qouting mechnismus der shell aktiviert und findet natürlich kein gegenstück dazu. wenn er ein zweites file mit ' darin finden würde hättest du ein unbrauchbares ergebniss, weil dann alles wischen den qoutes als ein dateiname behandelt werden würde und so einen gibt's effetkiv natürlich nicht auf der pladde. du kannst das aber umgehen und zwar folgendermassen: find . type f -print0 | xargs -0 grep <suchstring> dann werden die string argumente die an xargs übergeben werden, ähnlich wie in C, durch ein 0 byte am schluss getrennt. xargs kann mit dieser find option umgehen und macht eine trennung mit den einzelnen eingaben nach dem 0 byte und gibt die argumente korrekt an grep weiter. -print0/-0 ist immer dann von vorteil wenn du keine annahmen über die dateien machen kannst. ein 0 byte und / sind die einzigen zeichen die man auf ext2 nicht in einem dateinamen verwenden darf. deswegen ist diese lösung sicherer. es hält dich z.b. auch niemand ab ein * als dateinamen zu verwenden oder sonstwas das irgendwie shell spezifisch ist. die ergebnisse wären konfus. btw, dass kann AFAIK nur GNU find/xargs. die solaris büchse hier kann das (ohne GNU) nicht. -- ----------------------------------------------------------- Um sich aus der Liste auszutragen schicken Sie bitte eine E-Mail an [EMAIL PROTECTED] die im Subject "unsubscribe <deine_email_adresse>" enthaelt. Bei Problemen bitte eine Mail an: [EMAIL PROTECTED] ----------------------------------------------------------- 786 eingetragene Mitglieder in dieser Liste.

