sed 命令 - 适用于文件夹的所有文本 (.txt) 文件

sed command - apply in all text (.txt) files of folder

我想应用这个 sed 命令

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

到目录的所有文件..基本上我想保持相同的名称但在找到特定字符串后删除所有行..我如何调整这个sed命令以应用于所有文本( .txt) 文件夹中的文件并保留其原始名称 ?

编辑:我正在使用 Mac OS X 我不知道 sed 命令是否有问题...

如果我尝试做

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

我收到错误 sed: 1: 替换命令中的错误标志:'x'

第二次编辑:Anu 的回答有效!

只需将 sed 的就地版本用作

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

您可以将此 findsed 一起使用:

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' *.txt