2014-03-31 92 views
1

我有一個自定義應用程序,可以爲每個訂單創建日誌文件。日誌文件具有隨機名稱。我只想保留10個最新的文件。Bash:刪除除最後10個日誌文件以外的所有文件

到目前爲止,我來到這裏:

ls -lrth /var/log/myapp/ | awk {'print $9'} | tail -n10 

這個命令讓我的10個最新的文件列表。現在,我想刪除除這些文件以外的所有其他內容。有沒有辦法獲得除這10個最新文件以外的所有文件的列表,或者如何刪除除這10個文件以外的所有文件?

乾杯, 彼得

回答

-1
for i in $(ls -lrth /var/log/myapp/ | awk {'print $9'} | head -n -10) ; do echo $i ; done 

檢查輸出,如果滿足更換回聲RM。

+2

[不解析LS(HTTP:// mywiki。 wooledge.org/ParsingLs) – BroSlow

+0

@BroSlow - 同意並標記爲有用! – blue

2

這一發現會給你所有,但最後10名最近修改的文件:

find . -exec stat --format="%X" + | sort -n | tail -n+10 

使用ls類似的列表:

ls -lt|tail -n+10 
相關問題