2016-04-04 52 views
0

我刚刚使用find和sed的组合来代替目录文件中的字符串。sed脚本 - 临时文件上的权限被拒绝

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

它完成了工作。之后,我退出了服务器(通过SSH连接),然后记住,我需要再次运行该命令。所以我解雇略有修改查找/替换字符串相同的命令,但没有工作了给以下错误:

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

现在有什么不对?

FWIW:每次新尝试后提及的临时文件的文件名都会改变。

回答

2

在编辑文件时,sed创建一个临时文件,保存结果,然后最终mv原始文件与临时文件。

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

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

+0

但为什么10分钟前它工作? – beta

+0

@beta这是一个模棱两可的问题,检查目录的权限,你没有写权限..也许在第一次,你运行它作为不同的用户谁有权限.. – heemayl

+0

好吧,对不起。我的管理员在两次尝试之间改变了权限。我不知道这一点。 – beta