Vous pouvez utiliser sed
de » w
drapeau soit /dev/stderr
, /dev/tty
, /dev/fd/2
si pris en charge sur votre système. Par exemple avec une entrée file
comme:
foo first
second: missing
third: foo
none here
fonctionnement
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
les sorties:
bar first
third: bar
bien que le file
contenu ait été changé en:
bar first
second: missing
third: bar
none here
Donc, dans votre cas, exécutez:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
éditera les fichiers sur place et produira:
./fichier1:
trucs de bar
plus de bar
./fichier2:
./file3:
bar d'abord
troisième: bar
Vous pouvez également imprimer quelque chose comme original line >>> modified line
par exemple:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
édite les fichiers sur place et les sorties:
./fichier1:
trucs de foo >>> trucs de bar
plus de foo >>> plus de bar
./fichier2:
./file3:
foo first >>> bar first
troisième: foo >>> troisième: bar
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done