команда sed-применить во всем тексте (.txt) файлы папки


Я хочу применить эту команду sed

sed '/begin 644/,$d' file1.txt > file1.txt

Ко всем файлам каталога.. в принципе, я хочу сохранить то же самое имя, но удалить все строки после того, как будет найдена определенная строка.. как я могу настроить эту команду sed, чтобы она применялась ко всему тексту (.txt) файлы в папке и сохранить их оригинальные имена ?

EDIT: я использую Mac OS X, я не знаю, есть ли какая-то проблема с командой sed...

Если я попытаюсь сделать

sed -i '/begin 644/,$d' *.txt

Я получаю ошибку sed: 1: плохой флаг в замените команду: 'x'

2-е редактирование: ответ Ану работает !

3   2   2015-02-19 23:09:05

3 ответа:

Вы можете использовать это find с sed:

find . -maxdepth 1 -name '*.txt' -exec sed -i.bak '/begin 644/,$d' {} + 

Или если вы хотите сохранить begin 644:

find . -maxdepth 1 -name '*.txt' -exec sed -i.bak -n '1,/begin 644/p' {} + 

Просто используйте версию sed на месте как

sed -i '/begin 644/,$d' file1.txt

Вы можете использовать опцию edit in place sed и селектор звездочек так

sed -i '/begin 644/,$d' *.txt