0

我有大约 10 个文件夹,我试图在这些文件夹下只保留几个子文件夹并删除其余的。

例子:我有

A/1
A2
A/3
A/4

乙/1
B/4
B/5
B/6

我试图在每个父文件夹 A 和 B 下只保留文件夹 1 和 4。我find -type d -name 2 -exec rm -rf {} \;用来查找和删除每个文件夹。

是否有任何 unix 命令只保留文件夹 1 和 4 并删除其余的?

4

4 回答 4

1

AIG 的排除想法可能是正确的,但使用 find 排除的方法是使用 -o (or) 运算符,如果之前的内容为真则停止,否则继续:

find . -mindepth 2 -type d -name 1 -o -name 4 -o -exec rm -rf {} +
于 2015-10-07T19:26:42.840 回答
1

告诉 find 你在找什么;

find . -mindepth 2 -type d -name "[^14]" -exec rm -rf {} \;

排除目录 1 和 4,在子级别,找到其他目录并删除它们。

于 2015-10-07T19:02:07.517 回答
0

我相信这适用于 posix 兼容系统:

find . -type d -links 2 \! \( \( -name 1 \) -o \( -name 4 \) \) -exec rm -rf {} \;

这仅包括子目录,不包括名为 1 或 4 的目录。

于 2015-10-07T19:20:27.117 回答
0

只使用 glob

$ rm -rf [AB]/[^14]
于 2015-10-07T20:57:45.007 回答