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