2015-10-07 67 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] 
相關問題