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

bet*_*eta 1 permissions bash sed permission-denied

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

find . -type f -exec sed -i 's,foo,bar,g' {} +
Run Code Online (Sandbox Code Playgroud)

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

sed: couldn't open temporary file ./sedPFq4Ck: Permission denied
Run Code Online (Sandbox Code Playgroud)

现在怎么了?

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

hee*_*ayl 5

在就地编辑文件时,sed创建一个临时文件,保存结果,然后保存带有临时文件mv的原始文件。

问题是您在sed试图创建临时文件的目录中没有写权限。

由于文件是./sedPFq4Ck,请检查运行find命令的目录的权限。