我有大约 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 并删除其余的?
AIG 的排除想法可能是正确的,但使用 find 排除的方法是使用 -o (or) 运算符,如果之前的内容为真则停止,否则继续:
find . -mindepth 2 -type d -name 1 -o -name 4 -o -exec rm -rf {} +
告诉 find 你在找什么;
find . -mindepth 2 -type d -name "[^14]" -exec rm -rf {} \;
排除目录 1 和 4,在子级别,找到其他目录并删除它们。
我相信这适用于 posix 兼容系统:
find . -type d -links 2 \! \( \( -name 1 \) -o \( -name 4 \) \) -exec rm -rf {} \;
这仅包括子目录,不包括名为 1 或 4 的目录。
只使用 glob
$ rm -rf [AB]/[^14]