我有使用命名约定的文件:
FILE_NAME=$APP_NAME"_"$PARAM_COUNTRY"_"$YYYY"_"$MM"_"$DD".info"
所以在unix中我的文件会像这样创建:
run.sh_JP_2018_03_19.info
run.sh_JP_2018_03_20.info
run.sh_JP_2018_03_21.info
run.sh_AP_2018_03_21.info
run.sh_AP_2018_03_21.info
因此,如果今天的日期是'2018_03_21',我希望有一个命令可以删除早于此日期的文件,其中包含字符串'JP'。即使我在几天后执行它,此命令也应该有效。我该怎么做?
答案 0 :(得分:2)
此命令:
find -type f -name "run.sh_JP_20[0-9][0-9]_[0-9][0-9]_[0-9][0-9].info" -mtime +1 -delete
将忽略文件名中的已宣布日期,但查找文件的修改日期,并且只查找文件名中的日期格式等大致内容,但如果您不这样做,这在大多数情况下都是足够的有像run.sh_JP_2018_53_79.info这样的名字。
它将删除至少1天的文件。有关-ctime和-atime之类的变体以及可用标志的OS /文件系统,请参阅查找手册。
find的-delete标志适用于Linux / Gnu-find。
从现在起三天,您只需将其修改为-mtime +4 -delete
。
日期和模式匹配很快就无法维持。