Ви можете використовувати sed
«s w
прапор або /dev/stderr
, /dev/tty
, /dev/fd/2
якщо підтримується у вашій системі. Наприклад, із введенням file
типу:
foo first
second: missing
third: foo
none here
біг
sed -i '/foo/{
s//bar/g
w /dev/stdout
}' file
Виходи:
bar first
third: bar
хоча file
вміст було змінено на:
bar first
second: missing
third: bar
none here
Тож у вашому випадку працює:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
s//bar/g
w /dev/fd/2
}' {} \;
буде редагувати файли на місці та виводити:
./file1:
барні речі
більше бар
./file2:
./file3:
бар перший
третій: бар
Ви також можете надрукувати щось на зразок original line >>> modified line
:
find . -type f -printf '\n%p:\n' -exec sed -i '/foo/{
h
s//bar/g
H
x
s/\n/ >>> /
w /dev/fd/2
x
}' {} \;
редагує файли на місці та виводить:
./file1:
foo речі >>> бар речі
більше foo >>> більше бар
./file2:
./file3:
foo перший >>> перший бар
третій: foo >>> третій: bar
for x in `find . -type f`; do echo ///File $x: ; sed --quiet 's/abc/def/gp' $x; done