我在一个目录下有以下文件。
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
答案 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 {} \;