通过sed在我的高清的“backup”目录中备份每个被替换的文件?

时间:2012-05-14 17:30:45

标签: sed replace

我知道您可以指定-i.bak,但我不想处理必须删除.bak文件,即使它很简单:

find . -name '*.bak' -exec rm {} \;

我是否可以通过某种方式审核sed,以便默认情况下,只要我指定-i,它就会将其内联替换的每个文件都备份为/www/backups

1 个答案:

答案 0 :(得分:3)

如果您只想在没有任何备份文件的情况下进行内联替换,请关闭扩展程序:sed -i 's/pat/rep/'

至于其他地方的备份,GNU sed说:

  

遵循以下规则:如果扩展名不包含*,那么它   被附加到当前文件名的末尾作为后缀;如果   扩展名包含一个或多个*字符,然后每个星号都包含   替换为当前文件名。这允许您添加前缀   备份文件,而不是(或除了)后缀,甚至是   将原始文件的备份副本放入另一个目录   (如果目录已存在)。

备份“后缀”中的星号将替换为文件名(包括路径 - 因此,如果您有子文件夹,则需要先在备份目录中创建它们。)

% seq 5 > file
% sed -i'backups/*.bak' s/3/c/ file
% cat file
1
2
c
4
5
% cat backups/file.bak
1
2
3
4
5
%