43

我正在使用mingw。

  $ sed -i "s/a/b/" test.txt
  sed: preserving permissions for `./sed003480': Permission denied

我可以在当前目录中触摸/rm 文件。

4

4 回答 4

44

这是由 Windows 安全设置引起的。

从上下文菜单中打开文件夹的属性设置。在 Security 选项卡中,单击Edit ,在弹出窗口中按Add...并将您的用户添加到列表中,在Allow列中选中Full Control 。OK两次以应用更改。

于 2013-01-19T03:57:42.020 回答
7

对我来说,文件夹是只读的。取消选中只读选项可以解决我的问题。感谢 Zenadix 的评论

于 2017-02-15T08:56:25.927 回答
2

在 Windows 10 WSL 上,我遇到了类似的问题。该问题是由 VS 代码打开并显然使用该文件引起的。关闭 VS 代码解决了我的问题。

于 2019-06-19T20:27:59.750 回答
-1

TL;DR:使用sudo


就我而言,我正在运行一个在 Windows Subsystem for Linux (WSL) 上运行的 bash 脚本,如下所示:

./generate.sh

该脚本创建了一堆文件,但是由于未知原因,sed 被拒绝修改这些文件的权限,原因如下:

实际的 sed 命令用于执行看起来有点像这样的搜索替换:

grep -rl $PATTERN $PUBLIC_API_FOLDER/ \
    | xargs sed -i 's/$PATTERN/$REPLACE/g'

如您所见,尽管在任何时候都没有提升权限,但我仍然无法修改脚本创建的文件:

sed: preserving permissions for ‘public_api/models/sedt0qk4D’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedOxoc1O’: Operation not permitted
sed: cannot rename public_api/models/sedOxoc1O: Permission denied
sed: preserving permissions for ‘public_api/controllers/sedx5BafW’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedVkdqzc’: Operation not permitted
sed: preserving permissions for ‘public_api/models/sedLvyS3s’: Operation not permitted
sed: cannot rename public_api/models/sedLvyS3s: Permission denied
sed: preserving permissions for ‘public_api/controllers/sedE7GSe8’: Operation not permitted
sed: cannot rename public_api/controllers/sedE7GSe8: Permission denied
sed: preserving permissions for ‘public_api/controllers/sednHZBQf’: Operation not permitted
sed: cannot rename public_api/controllers/sednHZBQf: Permission denied

我的解决方案是简单地使用 sudo 运行脚本。

sudo ./generate.sh
于 2019-10-24T12:20:44.063 回答