删除除符号链接中映射的所有文件夹

删除除符号链接中映射的所有文件夹

我需要删除未使用的文件夹。有一些符号链接指向该文件夹。我这里的要求是分三步。

1)获取顶层所有不为空的可用文件夹

2)获取所有非空文件夹和指向它们的符号链接。

3)删除那些不在符号链接中的文件夹。所以这基本上就是步骤 1 - 步骤 2。

例子:

文件夹 A、B、C 在 A、B、C 中,您将有多个文件夹,例如 x、y、z。

A(x1, y1,z1), B (x2, 2, z2), C(x3, y3, z3)

符号链接文件夹 1(同样存在另外一个符号链接 2)

a-->A/x1
b-->C/z3
c-->B/y2 

我需要首先获取所有非空,然后获取这些符号链接点。最后需要删除文件夹(非空)并且不指向任何符号链接。

我见过很少的帖子,但他们排除了一种特定或一种特定类型的文件夹。请指教。

答案1

您可以利用以下事实:该rmdir命令只会删除空目录。

首先用于find <folder structure root> -type d收集所有文件夹的列表(空或非空)。将其保存到临时文件中。

然后收集所有符号链接目标的列表。使用此列表过滤掉第一个列表中的任何匹配文件夹,生成第三个列表:不是符号链接目标的所有文件夹。

rmdir然后在第三个列表中的每个文件夹上运行,故意忽略任何“目录不为空”错误。只有空文件夹才会真正被删除。

相关内容