2014-09-11 20 views
0

我有一個複製構建目錄的路徑,所以我只需要保留最新的3個目錄並刪除其他目錄,而不是按日期,而是使用最新的內部版本號。刪除一個以內部版本號結尾的目錄

,如果我有在路徑/ tmp目錄

1.1.0000-21, 1.1.0000-5, 1.1.0000-18, 1.1.0000-4 

我應該在/tmp路徑作爲其最古老的目錄中刪除1.1.0000-4目錄下面的目錄。

我正在嘗試rm -rf /base/path -type d -ctime 4,但這是基於最新的文件,不知道要刪除最舊的數字,我需要一些reg-ex在這裏嗎?

回答

1

您可以結合sorttail這個

ls \   # Produce the list of directories, 
| sort -r \ # reorder it in reverse dictionary order 
| tail -n +5 # and trim the first 4 = 5-1 entries 

這假定版本以便與字典順序,哪個是假的,如果你的版本沒有固定長度一致(所以2.0版的外觀較新的爲12.0) 。你可以通過調用sort函數來解決這個問題。

+0

是Michael,長度不固定。我用文件夾名更新了我的問題。我發現編號第一個數字在連字符( - )後面,因此,如果有XXXXXX-84,XXXXXX-2,XXXXXX-114和XXXXXX-3,那麼114,2和3將作爲新版本反向),這是錯誤的。 – guest 2014-09-11 12:04:18

+0

謝謝你的幫助邁克爾。如果我的所有版本的增量順序相同(大部分都是),那麼以下方法將起作用。 ls | sort -nr | tail -n +4 | xargs rm -rf – guest 2014-09-11 13:26:12