Sie könnten nutzen sed‚s wFlagge mit entweder /dev/stderr, /dev/tty, /dev/fd/2wenn auf Ihrem System unterstützt. ZB mit einer Eingabe filewie:
foo first
second: missing
third: foo
none here
Laufen
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
Ausgänge:
bar first
third: bar
obwohl der fileInhalt geändert wurde in:
bar first
second: missing
third: bar
none here
Also in Ihrem Fall läuft:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
bearbeitet die Dateien direkt und gibt sie aus:
./Datei1:
Bar Zeug
mehr bar
./Datei2:
./Datei3:
Bar zuerst
drittens: bar
Sie könnten auch etwas wie original line >>> modified linezB drucken :
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
bearbeitet die Dateien an Ort und Stelle und gibt Folgendes aus:
./Datei1:
Foo Stuff >>> Bar Stuff
mehr foo >>> mehr bar
./Datei2:
./Datei3:
Foo zuerst >>> Bar zuerst
drittens: foo >>> drittens: bar
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done