Linux 如何按名称系列查找和删除此文件

Linux 如何按名称系列查找和删除此文件,linux,ls,Linux,Ls,根据日期,我的其中一个目录中的文件列表为: 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 CV

根据日期,我的其中一个目录中的文件列表为:

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个最新文件(series=CV,A,AA)。例如,我想删除

CV09.tar
A06.tar
A07.tar

剩下的留着。我应该使用“wc-l”吗?

使用Find命令。与此类似

find /var/log/httpd/ -name "*CV.tar" -mtime +5 -delete

使用Find命令。与此类似

find /var/log/httpd/ -name "*CV.tar" -mtime +5 -delete
这应该处理文件名中的所有字符(换行符除外)

这是怎么回事

  • ls-t
    按修改时间的降序列出当前目录中的所有文件。即,最新修改的文件是第一个,每行一个文件名
  • sed-e'1,5d'
    删除前5行,即10个最新文件。我用这个来代替
    tail
    ,因为我永远记不起我是需要
    tail-n+5
    还是
    tail-n+11
  • xargs-d'\n'rm
    收集每个输入行(不带终止换行符),并将每行作为参数传递给
    rm
这应该处理文件名中的所有字符(换行符除外)

这是怎么回事

  • ls-t
    按修改时间的降序列出当前目录中的所有文件。即,最新修改的文件是第一个,每行一个文件名
  • sed-e'1,5d'
    删除前5行,即10个最新文件。我用这个来代替
    tail
    ,因为我永远记不起我是需要
    tail-n+5
    还是
    tail-n+11
  • xargs-d'\n'rm
    收集每个输入行(不带终止换行符),并将每行作为参数传递给
    rm