我有一组用户文件夹,可以保存他们的PDF文件。我想创建一个cron作业,它将删除所有嵌套目录中超过一周(以及仅文件,而不是目录)的所有文件。
因此,我的目录结构如下所示:
users
│ index.html
│
+---+ a-long-string-of-random-characters-1
| │ file1.pdf
│ │ file2.pdf
│
|
+---+ a-long-string-of-random-characters-2
│ │ file1.pdf
│ │ file2.pdf
|
|
...
我已经有大约8个目录。我需要删除user
目录中的所有pdf,它是sub-direcotries。
我使用以下命令删除旧的db备份:
00 06 * * * find /path/to/backups/* -mtime +14 -delete
有些部分非常明显。 +14
将成为+7
,/*
将成为/*.pdf
00 06 * * * find /path/to/users/*.pdf -mtime +7 -delete
但子目录怎么样?
干杯
答案 0 :(得分:2)
替换:
00 06 * * * find /path/to/users/*.pdf -mtime +7 -delete
使用:
00 06 * * * find /path/to/users/ -type f -iname '*.pdf' -mtime +7 -delete
注意:
find
将自动递归到子目录。我们只需要告诉它从/path/to/users/
开始,它将以递归方式查看所有users
个子目录。
要将搜索范围限制为常规文件,我们会添加-type f
。
要将搜索限制为名称以.pdf
结尾的文件,我们添加-iname '*.pdf'
(使用-iname会使匹配不区分大小写,这通常是一个好主意)
在创建上述cronjob之前,请尝试:
find /path/to/users/ -type f -name '*.pdf' -mtime +7
这将显示将删除哪些文件。如果您对此列表满意,那么可以使用-delete
再次运行它或创建cronjob。