首页 > 解决方案 > UNIX 无法归档文件

问题描述

我在一个目录下有以下文件。

ABC_2019-01-01.zip  
ABC_2019-01-02.zip  
ABC_2019-01-03.zip  
.  
.  
.  
ABC_2019-01-31.zip   
.  
.  
XYZ_2019-01-01.zip  
XYZ_2019-01-02.zip  
XYZ_2019-01-03.zip  
.  
.  
.  
XYZ_2019-01-31.zip  

假设今天的日期是 2019-01-31,那么我只想保留今天的 ABC 文件,即 ABC_2019-01-31.zip,保留所有 XYZ 文件(不考虑日期)并删除所有不包含今天日期的 ABC 文件。

输出应该是:

ABC_2019-01-31.zip   
.   
.   
XYZ_2019-01-01.zip   
XYZ_2019-01-02.zip   
XYZ_2019-01-03.zip   
.   
.   
.   
XYZ_2019-01-31.zip  

标签: shellunix

解决方案


假设您已$date填写:

date=$(date %+m-%d-%Y)

在 bash 中,您可以使用扩展的 glob 来排除匹配项:

shopt -s extglob
rm ABC_!("$date").zip

或者在您可以使用的任何外壳中find

find dir/ -name 'ABC_*.zip' ! -name "ABC_$date.zip" -delete

如果-delete在您的平台上不可用,请使用:

find dir/ -name 'ABC_*.zip' ! -name "ABC_$date.zip" -exec rm {} \;

推荐阅读