Você pode usar sed
w
sinalizador com /dev/stderr
, /dev/tty
, /dev/fd/2
, se suportado em seu sistema. Por exemplo. com uma entrada file
como:
foo first
second: missing
third: foo
none here
executando
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
saídas:
bar first
third: bar
embora file
conteúdo tenha sido alterado para:
bar first
second: missing
third: bar
none here
Então, no seu caso, executando:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
edita os arquivos no local e a saída:
./file1: bar stuff more bar ./file2: ./file3: bar first third: bar
Você também pode imprimir algo como original line >>> modified line
, por exemplo:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
edita os arquivos no local e saídas:
./file1: foo stuff >>> bar stuff more foo >>> more bar ./file2: ./file3: foo first >>> bar first third: foo >>> third: bar