[英]shell script to delete all files except the last updated file in different folders
[英]Shell script to delete all folders but the last 5 ones
我正在尋找以下腳本的變體,以刪除除最后創建的五個文件夾以外的所有文件夾:
find ./ -type d -ctime +10 -exec rm -rf {} +
因此,這將刪除10天之前的所有內容。
但是在我看來,時間因素並不總是適用。 我需要類似的腳本來刪除文件夾,但我始終想保留最近創建的5個文件夾(按日期)。
因此,當有100個文件夾時,需要刪除其中的95個並保留最后創建的5個。
當有5個時,需要全部保留。
當有6個時,只需要刪除第一個創建的並保留其他5個。
首先find
印有列#1領先的日期,文件sort
按日期,忽略從列表中最后5個的最新項目,(那些保留),刪除列#1,然后rm
任何舊目錄被保留。 首先測試echo
代碼:
find . -type d -printf '%T@ %p\n' | sort -n |
head -n -5 | cut -f2- -d" " | xargs -0 echo rm -rd
...並且只有在看起來還可以的情況下,才刪除echo
來做事:
find . -type d -printf '%T@ %p\n' | sort -n |
head -n -5 | cut -f2- -d" " | xargs -0 rm -rd
上面的一些代碼是從plundra的“如何在目錄中遞歸查找最新修改的文件?”的答案中竊取的。
幾乎未經測試,因此最后是“ ls -ld”! :)
find ./ -type d -printf '%T@ %p\n' | sort -nr | cut -d' ' -f2- | grep "^....*" | tail --lines=+5 | xargs -i ls -ld {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.