如何按设置为日期的文件名删除文件?

CP24eva

我想删除文件不是按日期访问或创建,而是按文件名。文件名将是日期,我想每周执行一次cronjob,以清除7天以上的文件名日期。我可以做一个

find /my/directory -type f -name '*file-name.yyyy-mm-dd.qz' -delete

但是我必须每周更改脚本才能运行。我希望避免每周都要修改作业。

通配符

这是一种更健壮的形式,可以正确处理文件名和目录名称中的空格(甚至换行符)。

find . -type f -name '*.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].qz' -exec sh -c 'fdate="${1%.qz}"; fdate="${fdate##*.}"; [ "$fdate" "<" "$(date +%F -d "7 days ago")" ] && rm "$1"' find-sh {} \;

这涉及许多可能对某些人来说有些陌生的shell欺骗,所以让我们分解一下:

从当前目录开始,递归查找所有常规文件...

find . -type f

...其名称以完全相同的模式“ .YYYY-MM-DD.qz”结尾...

-name '*.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9].qz'

...然后,在每个匹配文件上运行一个shell命令(注意单引号)...

-exec sh -c '

...首先去除结尾的“ .qz” ...

fdate="${1%.qz}";

...然后去除开头的多余部分,仅保留“ YYYY-MM-DD” ...

fdate="${fdate##*.}";

...并比较该字符串以查看其排序方式(词法)是否早于7天前的日期“ YYYY-MM-DD” ...

[ "$fdate" "<" "$(date +%F -d "7 days ago")" ]

...如果是,则删除文件...

&& rm "$1"'

...我们将使用“ find-sh”作为“脚本名称”(即$0)用于错误报告...

find-sh

...并将找到的文件名设置为内嵌shell脚本的find参数一($1)。

{} \;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何按文件名中的日期对文件排序?

来自分类Dev

如何删除文件-基于文件名中的日期

来自分类Dev

如何删除文件-基于文件名中的日期

来自分类Dev

如何将滚动文件名设置为按进程ID唯一

来自分类Dev

如何根据文件名中的日期删除旧备份?

来自分类Dev

从存储为文件名的日期开始设置文件修改日期

来自分类Dev

如何将文件名参数设置为实际文件名

来自分类Dev

转换日期为文件名

来自分类Dev

如何删除文件名损坏的文件?

来自分类Dev

如何删除文件名无效的文件?

来自分类Dev

如何设置文件的Blob文件名?

来自分类Dev

在Powershell文件名中按日期列出文件

来自分类Dev

当文件在bash中具有不同的前缀时,如何按文件名中的日期排序?

来自分类Dev

我将如何`wget`文件,然后按下载日期而不是文件名保存它们?

来自分类Dev

如何列出文件 - 按文件名和修改日期排序?

来自分类Dev

从目录中许多文件的文件名中删除日期

来自分类Dev

删除文件名日期早于 7 天的文件

来自分类Dev

根据文件名中的日期删除和 tar 文件

来自分类Dev

从文件名中的日期设置创建日期

来自分类Dev

build.xml将日期和时间设置为文件名

来自分类Dev

根据修改日期将 CSV 文件名设置为 jmeter 中的变量

来自分类Dev

如何从文件名中删除空格

来自分类Dev

如何从URL删除文件名?

来自分类Dev

如何删除文件名末尾的\n

来自分类Dev

如何删除文件名的结尾?

来自分类Dev

如何设置下载链接的文件名?

来自分类Dev

如何设置下载链接的文件名?

来自分类Dev

如何在Rails中将文件夹下的所有文件名设置为枚举?

来自分类Dev

Python按日期排序-特定文件名

Related 相关文章

热门标签

归档