Bash rm-r-f不';不要删除内部文件夹

Bash rm-r-f不';不要删除内部文件夹,bash,makefile,scripting,cygwin,Bash,Makefile,Scripting,Cygwin,我有大型项目和一些脚本来编译它们。我无法在此处添加所有代码,因此我将尝试简化问题:在清理部分,我需要清理名为目录的文件夹,其中包含名为innerDir的其他目录。我有这个bash命令来清理目录: clean: rm -r -f directory rm: cannot remove 'directory': Directory not empty rm -r -f directory/* find directory rmdir directory

我有大型项目和一些脚本来编译它们。我无法在此处添加所有代码,因此我将尝试简化问题:在清理部分,我需要清理名为
目录
的文件夹,其中包含名为
innerDir
的其他目录。我有这个bash命令来清理
目录

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  
当目录是我事先用
mkdir-p
创建的文件夹时。当我清理时,会出现以下错误:

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  
但是当我试图进入
目录时,我看到它是空的。因此,为了进行调试,我将我的清理部分修改为:

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  
(假设也是这样,但在这里我也有机会看到
目录
的所有内容是否真的被删除了)。
现在我得到了这个错误:

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  
这里有两件事我不清楚:
(1).
innerDir
是在clening部分之前使用
makedir-p
创建的,在代码后面对其权限没有任何更改。为什么我没有删除它的权限?

(2). 如果我再次尝试清理-清理成功,我没有任何权限问题。因此,如果我在第一次尝试删除时出现权限错误,为什么不在第二次删除呢?

如果您的权限在目录树下是有效的,
rm-fr directory
应该可以工作

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  
如果您对innerDir没有读取权限,那么是否可能/可能(可能取决于正在运行的进程)有什么东西写入了innerDir,但之后会清理该文件,从而使目录变为空闲

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  
您能举例说明每个步骤之间发生的权限、所有权和操作范围吗

clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied  

您是否可以在工作时重命名父文件夹,和/或锁定其权限以防止其他用户或进程更改内容?

您是否使用sudo运行命令?该目录及其容器的权限和所有权是什么?你确定里面没有点文件吗?如果你能在失败几秒钟后可靠地完成你需要的任务,那么像
rm-rf dir | | |(sleep 2;rm-rf dir)
?@Alfe-我认为这不是一个好方法,因为如果我们用这种方法解决它,我们没有处理这个问题的根本原因——这可能会在以后伤害我们。Cygwin?因此,您使用的是带有windows文件系统的windows系统,以及最重要的Unix仿真器。我认为windows文件系统是罪魁祸首。
clean:
    rm -r -f directory
rm: cannot remove 'directory': Directory not empty
rm -r -f directory/*
find directory
rmdir directory                    
find: 'directory/innerDir': Permission denied