Rust 如何删除我不知道的目录';我没有进入铁锈区的许可?

Rust 如何删除我不知道的目录';我没有进入铁锈区的许可?,rust,filesystems,Rust,Filesystems,如何在Rust中递归删除目录,同时删除Unix权限为000的空目录?这些权限被理解为“任何用户都不允许读、写或执行” 我以前创建过如下目录: mkdir-p dir/trap chmod 000目录/陷阱 我尝试过这种方法: std::fs::remove_dir_all("dir").unwrap(); 但是,它在“权限被拒绝”的情况下失败。还有其他解决方案可以删除这样的目录吗,比如rm-rfwill?问题是remove\u dir\u all()首先遍历目录的内容以删除可能存在的任何文件

如何在Rust中递归删除目录,同时删除Unix权限为
000
的空目录?这些权限被理解为“任何用户都不允许读、写或执行”

我以前创建过如下目录:

mkdir-p dir/trap
chmod 000目录/陷阱
我尝试过这种方法:

std::fs::remove_dir_all("dir").unwrap();

但是,它在“权限被拒绝”的情况下失败。还有其他解决方案可以删除这样的目录吗,比如
rm-rf
will?

问题是
remove\u dir\u all()
首先遍历目录的内容以删除可能存在的任何文件或子目录。并且您没有读取目录的权限,因此会出现错误

你可以打电话:

std::fs::remove_dir("dir").unwrap();
它不尝试遍历目录,而是假设它已经为空,如果不是空,则失败


如果要删除一个非空的,
000
moded目录,必须先将权限更改回合理的值,然后才能安全地调用
remove\u dir\u all()

还没有找到简单的答案,因此我编写了自己的实现:

用法:

rm_rf::force_remove_all("target").expect("Failed to remove target");

这将删除Windows上的只读文件和Linux上缺少读取权限的空目录。

“是否有其他解决方案忽略只读标志?”是否为root?你是说有没有在linux中忽略权限的解决方案。。。我希望没有;)@Stargateur:实际上,要在Unix中删除文件(或目录),您需要对父目录的写入权限,而不是对文件本身的写入权限。。。除了粘性目录。@Stargateur我需要类似于
rm-rf
的东西。现在,
rm-rf
确实删除了“000”个目录及其子目录。实际上,我刚刚在我的Linux机器上测试了它,并且
rm-rf
没有删除
000
,非空目录。它失败于
EPERM
@MatthieuM请注意,我不是要求删除非空目录。我基本上要求的是
rm-rf
的相同行为。它删除空的“000”目录,以及可访问的非空目录。是一个可能的解决方案,但我认为程序更改文件权限是不常见的,最好让用户使用chmod或等效工具来解决问题。问题是我想递归地执行。像某些内部文件夹一样,可以有“000”权限。我会更新这个问题。UPD:完成,更新了问题。