我想应用这个sed命令
sed '/begin 644/,$d' file1.txt > file1.txt
到目录的所有文件。。基本上,我想保持相同的名称,但在找到某个字符串后删除所有行。。如何调整这个sed命令以应用于文件夹中的所有文本(.txt)文件并保留它们的原始名称?
编辑:我正在使用Mac OS X,我不知道sed命令是否有问题。。。
如果我试着做
sed -i '/begin 644/,$d' *.txt
我得到一个错误sed:1:替换命令中的错误标志:"x"
第二版:阿奴的答案奏效了!
您可以将此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