Sen kullanabilirsiniz sed
'ın w
biriyle bayrağı /dev/stderr
, /dev/tty
, /dev/fd/2
sisteminizde destekleniyorsa. file
Gibi bir giriş ile :
foo first
second: missing
third: foo
none here
çalışan
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
çıktılar:
bar first
third: bar
gerçi file
içeriğe değiştirildi:
bar first
second: missing
third: bar
none here
Yani senin durumunda, koşuyor:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
dosyaları yerinde ve çıktıda düzenler:
./file1:
bar malzemesi
daha fazla bar
./file2:
./file3:
önce bar
üçüncü: bar
Ayrıca, original line >>> modified line
örneğin:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
dosyaları yerinde düzenler ve çıktılar:
./file1:
foo şeyler >>> bar malzemesi
daha fazla foo >>> daha fazla bar
./file2:
./file3:
ilk önce fo >>> bar ilk
üçüncü: foo >>> üçüncü: çubuk
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done