rm -r -f不删除内部文件夹

时间:2017-07-27 07:58:16

标签: bash makefile scripting cygwin

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

clean:
    rm -r -f directory

当目录是我事先用mkdir -p创建的文件夹时。当我清理时,我收到此错误:

rm: cannot remove 'directory': Directory not empty

但是当我尝试输入directory时,我发现它是空的。因此,对于调试,我将清理部分修改为:

rm -r -f directory/*
find directory
rmdir directory                    

(假设也是如此,但在这里我也有机会看到directory的所有内容是否真的被删除了。) 现在我收到了这个错误:

find: 'directory/innerDir': Permission denied  

这里有两件事我不清楚:
(1)。 innerDir是在清理部分之前使用makedir -p创建的,后面的代码中对其权限没有任何更改。为什么我没有权限删除它?
(2)。如果我再次尝试清洁 - 清洁成功,我没有任何许可问题。所以,如果我第一次尝试删除它时获得了权限错误,为什么我不能在第二次得到它?

1 个答案:

答案 0 :(得分:1)

如果您的权限在目录树中有效,则rm -fr directory 应该才能正常工作。

如果你没有对innerDir的读取权限,那么是否有可能(可能取决于正在运行的进程)已经写入innerDir的内容,但是文件会被清除,以便目录变为空闲?

您能举例说明每个步骤之间发生的权限,所有权和某些操作范围吗?

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