Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

03.01.2007, 10:18

xargs

Ich will in alle Dateien eines bestimmten Musters (z.B.: file*.txt) einen Text einfügen.
Hab mir das ganze folgendermaßen vorgestellt:

find ./* -name "file*.txt" | xargs -i echo "Hallo" >> {}

funzt aber ned!!!
Für viele von euch sicher kein Problem!

Danke

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »billy_talent« (03.01.2007, 10:19)


Imhotep

followed the white rabbit

Beiträge: 1 530

Wohnort: Leipzig

Beruf: Informatiker

  • Nachricht senden

2

03.01.2007, 11:42

Zum Verständnis die >> und was darauf folgt sind keine Argumente an das Programm sondern werden von der Shell interpretiert. Somit kann xargs gar nicht so funktionieren wie du es dir gedacht hast.

find ./* -name "file*.txt" | xargs -i sh -c 'echo "Hallo" | tee -a {}'

Hab das nicht vollständig getestet, aber ich denk so sollte es gehen.
mit xargs startest du eine Untershell, die die Ausgaben von echo an tee weiterreicht. tee hat die Funktion das was es als Standardeingabe bekommt sowohl auszugeben, als auch in einer Datei zu speichern.

Zu mindest damit hat es bei mir geklappt
echo datei | xargs -i sh -c 'echo "tag auch" | tee -a {} '
localhost,
sweet localhost

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

3

03.01.2007, 12:12

In diesem Fall xargs zu nutzen ist sinnfrei.
find . -type f -name "file*.txt" -exec echo Hallo >>{} \;

4

03.01.2007, 13:03

@Imhotep
Danke damit funktionierts :applaus:

@Chucky the Devil
Deine Version ist genauso sinnfrei wie meine.
Es FUNKTIONIERT nicht. Trotzdem danke.

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

5

03.01.2007, 14:54

Stimmt, meine Loesung funktionierte nicht, weil ich einen Denkfehler drin hatte. Dennoch ist xargs hier sinnfrei, da es nicht fuer diesen Zweck gedacht ist (auch wenn es funktioniert).

Besser waere hier: find . -type f -name "foo*" -exec sh -c "echo Hallo >> {}" \;

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

6

03.01.2007, 16:02

doch, macht sinn, zb mit

Quellcode

1
 find blablahblah | xargs sed -i "1i\diese zeile einfuegen"


damit wird in die dateien der text in die erste zeile eingefügt.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Chucky the Devil

Pianist im Puff

  • »Chucky the Devil« ist männlich

Beiträge: 1 636

Wohnort: Koeln

Beruf: Network Architect

  • Nachricht senden

7

03.01.2007, 17:46

Schon klar. Man haette auch sed's /a feature nutzen koennen, aber das war nicht gefordert :)

Thema bewerten