我有大型项目和一些脚本来编译它们。我无法在此处添加所有代码,因此我将尝试简化问题:在清理部分,我需要清除名为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)。如果我再次尝试清洁 - 清洁成功,我没有任何许可问题。所以,如果我第一次尝试删除它时获得了权限错误,为什么我不能在第二次得到它?
答案 0 :(得分:1)
如果您的权限在目录树中有效,则rm -fr directory
应该才能正常工作。
如果你没有对innerDir的读取权限,那么是否有可能(可能取决于正在运行的进程)已经写入innerDir的内容,但是文件会被清除,以便目录变为空闲?
您能举例说明每个步骤之间发生的权限,所有权和某些操作范围吗?
您是否可以在工作时重命名父文件夹,和/或锁定其权限以防止其他用户或进程更改内容?