我需要删除未使用的文件夹。有一些符号链接指向该文件夹。我这里的要求是分三步。
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
然后在第三个列表中的每个文件夹上运行,故意忽略任何“目录不为空”错误。只有空文件夹才会真正被删除。