如何保留某些文件夹并删除Unix中的休息

时间:2015-10-07 18:54:01

标签: unix find rm rmdir

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

示例:我有

A/1
A/2
A/3 
A/4

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

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

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

3 个答案:

答案 0 :(得分:1)

告诉你找到你想要的东西; 找 。 -mindepth 2-type d -name“[^ 14]” - exec rm -rf {} \; 排除目录1和4,在子级别,找到其他目录并删除它们。

答案 1 :(得分:1)

AIG的排除想法可能是正确的,但是使用-o(或)运算符排除使用-o(或)运算符,如果之前的结果为真,则会停止运行,否则会继续:

find . -mindepth 2 -type d -name 1 -o -name 4 -o -exec rm -rf {} +

答案 2 :(得分:0)

我相信这适用于符合posix标准的系统:

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

这仅包含子目录,并排除名为1或4的目录。