我知道您可以指定-i.bak
,但我不想处理必须删除.bak
文件的问题,即使它很简单:
find . -name '*.bak' -exec rm {} \;
有什么方法可以审核sed
,以便默认情况下,只要我指定-i
它支持它内联替换的每个文件,例如/www/backups
?
如果您只想在没有任何备份文件的情况下进行内联替换,只需关闭扩展名: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
%