我有一個文件夾與一些正常的文件。我想按修改日期對它們進行排序,保留最新的20個條目,並從剩下的條目中刪除超過20天的任何內容。使用shell腳本來排序文件,然後刪除舊文件
這是我的代碼,刪除那些是> 20天的文件。
#!/bin/bash
cleanup="../some path/"
find $cleanup/*gz -mtime +20 -exec rm {} \;
但是,我不知道如何保留最後修改的20個文件,然後做刪除。請問如何解決它?
我有一個文件夾與一些正常的文件。我想按修改日期對它們進行排序,保留最新的20個條目,並從剩下的條目中刪除超過20天的任何內容。使用shell腳本來排序文件,然後刪除舊文件
這是我的代碼,刪除那些是> 20天的文件。
#!/bin/bash
cleanup="../some path/"
find $cleanup/*gz -mtime +20 -exec rm {} \;
但是,我不知道如何保留最後修改的20個文件,然後做刪除。請問如何解決它?
可以過濾20名出與
awk 'NR > 20'
完整的命令:
find ...... | awk 'NR > 20' | xargs -r rm
例如
seq 30 | xargs -i echo 'file{}' | awk 'NR > 20' | xargs -r rm
感謝您的回覆。所以在我的例子中,我應該在哪裏放置| | awk'NR> 20'| please?我有點混淆 – user4441082 2015-04-02 21:06:19
我沒有檢查,但這應該工作''找到$ cleanup/* gz -mtime +20 | awk'NR> 20'| xargs -r rm' – 2015-04-02 21:08:58
謝謝,它非常有用。 – user4441082 2015-04-02 21:18:10
你應該使用'找到 「$清理」 -name「* .gz「'這樣bash就不會使用'*'擴展。 – 2015-04-02 21:13:10