我正在使用mingw。
$ sed -i "s/a/b/" test.txt
sed: preserving permissions for `./sed003480': Permission denied
我可以在当前目录中触摸/ rm文件。
答案 0 :(得分:40)
这是由Windows安全设置引起的。
从上下文菜单中打开文件夹的“属性”设置。在“安全”选项卡中,单击编辑,在弹出窗口中按添加... 并将用户添加到列表中,选中完全控制在允许列中。按确定两次以应用更改。
答案 1 :(得分:1)
对我来说,文件夹是只读的。取消选中readonly选项修复我的问题。感谢Zenadix commment
答案 2 :(得分:0)
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
答案 3 :(得分:-1)
在Windows 10 WSL上,我遇到了类似的问题。该问题是由于VS代码被打开并且显然正在使用该文件引起的。关闭VS代码解决了我的问题。