2015-10-07 94 views
0

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

例如:我有

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

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

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

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

回答

1

告诉准确找到你要找的东西;

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

不包括目录1和4,在子级找到其他目录并删除它们。

+0

我试过这个命令来检查它没有返回任何东西。 找到。 -mindepth 2 -type d -name“[^ 14]”-print – Roger

+0

很奇怪。在我的安装中,我会得到您请求的确切结果。除非你的目录不是数字... – AlG

0

我相信这个工程的POSIX兼容的系统:

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

这包括独生子女目录和排除目录命名为1或4

1

AIG的想法,以排除可能是正确的,但方法来排除与find是用-o(或)运算符,它停止,如果什么来之前是真,否则继续:

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

使用glob的只是

$ rm -rf [AB]/[^14] 
相关问题