UNIX不适用于文件文件

时间:2019-03-07 15:29:04

标签: shell 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  

1 个答案:

答案 0 :(得分:0)

假设您已填写$date

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

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

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

或者在任何shell中都可以使用find

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

如果您的平台上没有-delete,请使用:

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