2015-08-28 42 views
1

名單在我的目錄,每個日期的一個是:如何查找和按名稱系列刪除此文件中的文件

2015-08-28 12:05 A01.tar 
2015-08-28 11:31 A02.tar 
2015-08-28 10:26 A03.tar 
2015-08-28 10:16 A04.tar 
2015-08-28 07:26 A05.tar 
2015-08-28 00:26 A06.tar 
2015-08-28 00:26 A07.tar 
2015-08-27 16:14 AA01.tar 
2015-08-27 14:58 CV03.tar 
2015-08-27 11:59 CV04.tar 
2015-08-27 11:32 CV05.tar 
2015-08-27 11:22 CV07.tar 
2015-08-27 11:12 CV08.tar 
2015-08-27 11:32 CV09.tar 

現在我想只保留每個系列的5頁最新的文件(系列= CV ,A,AA)。例如我想刪除

CV09.tar 
A06.tar 
A07.tar 

並保留其餘部分。我應該使用「wc -l」嗎?

回答

0

使用查找命令。與此相似

find /var/log/httpd/ -name "*CV.tar" -mtime +5 -delete 
0
ls -t | sed -e '1,5d' | xargs -d '\n' rm 

這應該處理文件名中的所有字符(除換行符)。

這是怎麼回事?

  • ls -t按照修改時間的降序列出當前目錄中的所有文件。也就是說,最近修改的文件是第一個,每行一個文件名。
  • sed -e '1,5d'刪除前5行,即10個最新的文件。我用這個而不是tail,因爲我永遠不會記得我是否需要tail -n +5tail -n +11
  • xargs -d '\n' rm收集每條輸入行(不帶終止換行符)並將每行作爲參數傳遞給rm