通过sed将每个替换的文件备份到我的hd的“备份”目录中?

通过sed将每个替换的文件备份到我的hd的“备份”目录中?,sed,replace,Sed,Replace,我知道您可以指定-I.bak,但我不想处理必须删除.bak文件的问题,即使它非常简单: find-名称'*.bak'-exec rm{}\ 是否有某种方法可以审核sed,以便在默认情况下,每当我指定-I时,它都会将它内联替换的每个文件备份到/www/backups?如果您只想内联替换而不需要任何备份文件,只需关闭扩展名:sed-I's/pat/rep/' 至于在其他地方的支持,他说: 遵循以下规则:如果扩展不包含*,则 作为后缀附加到当前文件名的末尾;如果 扩展名不包含一个或多个*字符,则每个星

我知道您可以指定
-I.bak
,但我不想处理必须删除
.bak
文件的问题,即使它非常简单:

find-名称'*.bak'-exec rm{}\


是否有某种方法可以审核
sed
,以便在默认情况下,每当我指定
-I
时,它都会将它内联替换的每个文件备份到
/www/backups

如果您只想内联替换而不需要任何备份文件,只需关闭扩展名:
sed-I's/pat/rep/'

至于在其他地方的支持,他说:

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

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


此解决方案将在带有
sed:cannot rename foo:Invalid cross device link
的ecryptfs文件系统上失败。
% 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
%