sed-hilfe gesucht

F

flugopa

hallo

mein problem sind einige dateien im verz. /home/userverzeichnis.

ich möchte alle dateien nach 1234567890 durchsuchen und durch $USER ersetzen, incl.
alle dateien die mit . (soll punkt heissen) beginnen.

find -type f name * | sed 's/1234567890/$USER/g' xargs ???

ich bedanke mich schon jetzt für jede hilfreiche unterstützung

wer hat wirklich ahnung?
 
Willst Du den Inhalt von $USER einsetzen

Code:
find . -type f | xargs -n1 sed -i '' -e "s/1234567890/$USER/g"

oder den Namen $User?

Code:
find . -type f | xargs -n1 sed -i '' -e 's/1234567890/$USER/g'

Wenn Dein sed inplace nicht kennt:

Code:
find . -type f | xargs -n1 | while read i; do sed 's/1234567890/$USER/g' "$i">tmpfile; mv tmpfile "$i"; done

edit: Dabei muss beachtet werden, dass tmpfile nicht existieren darf, da es sonst gelöscht wird.

Gruss, Xanti
 
Zuletzt bearbeitet:
leider funktioniert es nicht.


der hinweis auf eine webseite ist ganz nettt und es gibt tausende davon, aber verstehen muss man es auch und ich habe gerade ein riesen brett vor dem kopf.

ich möchte doch nur ... siehe ausgangsmail.

für jede hilfe bin ich sehr dankbar.
 
flugopa schrieb:
leider funktioniert es nicht.
Das ist eine sehr aussagekräftige Fehlermeldung!

der hinweis auf eine webseite ist ganz nettt und es gibt tausende davon, aber verstehen muss man es auch und ich habe gerade ein riesen brett vor dem kopf.

ich möchte doch nur ... siehe ausgangsmail.

für jede hilfe bin ich sehr dankbar.

Deine Aufgabenstellung ist leider auch nicht eindeutig.

ch möchte alle dateien nach 1234567890 durchsuchen und durch $USER ersetzen
Stellt sich die Frage was du durch $USER ersetzen willst.
Die Dateien? :think:
Den Wert in den Dateien? :think:
Den Dateinamen, welcher 123456789 enthält? :think:

Bedenke, dass du etwas willst, insofern ist es an dir dich eindeutig auszudrücken, um es den Helfenden so leicht wie möglich zu machen.

Wenn du etwas erreichen willst, solltest du verstehen was dir da vorgeschlagen wird.
Folgendes gibt alle dateinamen aus, die unterhalb von path existieren und vom Typ Datei sind ( einschl. der , die mit einen Punkt beginnen)
find /path -type f

Xanti sein Vorschlag :
Code:
find . -type f | xargs -n1 | while read i; do sed 's/1234567890/$USER/g' "$i">tmpfile; mv tmpfile "$i"; done
wird funktionieren, wenn du den Sedbefehl in Doppelquota (sed "s/1234567890/$USER/g" ) setzt, da damit $USER zum Wert expandiert.

Gruß Wolfgang
 

Ähnliche Themen

diff in Bezug zu sed setzen

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Windows clients können nicht mehr auf lange laufendes System zugreifen

Newbie sucht Hilfe: Zahl aus Datei mit grep/cut/sed lesen und schreiben?

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Zurück
Oben