sed 脚本 - 临时文件权限被拒绝

问题描述 投票:0回答:2

我只是使用 find 和 sed 的组合来替换目录文件中的字符串。

find . -type f -exec sed -i 's,foo,bar,g' {} +

它完成了工作。之后我注销了服务器(通过 SSH 连接),然后想起我需要再次运行该命令。因此,我使用稍微修改过的查找/替换字符串来触发相同的命令,但它不再起作用,并出现以下错误:

sed: couldn't open temporary file ./sedPFq4Ck: Permission denied

现在怎么了?

FWIW:每次新尝试后,上述临时文件的文件名都会更改。

bash sed permissions permission-denied
2个回答
5
投票

就地编辑文件时,

sed
会创建一个临时文件,保存结果,最后
mv
将原始文件与临时文件一起保存。

问题是您在

sed
尝试创建临时文件的目录中没有写入权限。

由于文件为

./sedPFq4Ck
,请检查运行
find
命令的目录的权限。


0
投票

出了什么问题?错误在于

sed
不使用
$TMP
作为创建临时文件的位置。我想说这是一个错误——而且也是一个令人讨厌的错误。

© www.soinside.com 2019 - 2024. All rights reserved.