grep etwas mit xargs und find

bash-guru 😉 ich versuche es zu verbessern, einige Zeichenfolge in die bash grep keyword - übereinstimmungen in bestimmten Dateien. Es sieht so aus:

find /<path>/hp -iname '*.ppd' -print0 | xargs -0 grep "\*ModelName\:"

das funktioniert sehr schnell für mich! In 20-mal schneller ist als diese:

find /<path>/hp -iname '*.ppd' -print0 | xargs -0 -I {} bash -c 'grep "\*ModelName\:" {}'

Aber das problem ist, dass im ersten Skript, das ich bin immer folgende Zeilen:

/<path>/hp/hp-laserjet_m9040_mfp-ps.ppd:*ModelName: "HP LaserJet M9040 M9050 MFP"

aber das gewünschte Ergebnis ist einfach

*ModelName: "HP LaserJet M9040 M9050 MFP"  

(wie in dem zweiten Skript). Wie kann ich es erreichen?

P. S.: ich bin mit find für Flexibilität und zukünftige Verbesserungen des Skripts.

Ich verstehe nicht, warum man einen eingreifenden bash in Ihrem zweiten Befehl.
Auch ohne Aufruf eingreifenden bash explizit, es wird funktionieren auf die gleiche langsame: find /<path>/hp -iname '*.ppd' -print0 | xargs -0 -I {} grep "*ModelName\:" {}.

InformationsquelleAutor likern | 2012-12-22

Schreibe einen Kommentar