![僅保留目錄中最新的兩個資料夾](https://rvso.com/image/1415072/%E5%83%85%E4%BF%9D%E7%95%99%E7%9B%AE%E9%8C%84%E4%B8%AD%E6%9C%80%E6%96%B0%E7%9A%84%E5%85%A9%E5%80%8B%E8%B3%87%E6%96%99%E5%A4%BE.png)
我有一個目錄,其中包含以下資料夾。
Data-2014-07-10-0240
Data-2014-07-10-0340
Data-2014-07-11-1232
Data-2014-07-12-0530
Data-2014-07-13-1210
我想只保留最新的兩個資料夾並刪除其餘的。該資料夾的格式如下:Data-YYYY-MM-DD-HHMM
.
有沒有辦法可以比較資料夾名稱並保留最新的並刪除其餘的?我可以稍後在我的 shell 腳本中容納它。
答案1
我假設目錄的名稱也是它們所建立的時間戳記。如果是這樣的話你可以使用LS根據目錄的修改時間列出檔案。
這將按照最新的第一個順序列出目錄
cd /PATH/TO/PARENT-DIRECTORY/
ls -lt
若要刪除除最新的 2 個檔案之外的所有目錄:-
cd /PATH/TO/PARENT-DIRECTORY/
ls -lt | tail -n +4 | awk '{print $9}' | xargs rm -r
筆記:首先,請在測試環境中嘗試一下,並徹底確認這是否正是您想要執行的操作以及該腳本是否適用於您的目錄集。