[英]Linux - Deleting files (only) within nested directories
我有一组用户文件夹,他们可以在其中保存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文件。
我使用以下命令删除旧的数据库备份:
00 06 * * * find /path/to/backups/* -mtime +14 -delete
有些部分很明显。 +14
将变成+7
, /*
将是/*.pdf
00 06 * * * find /path/to/users/*.pdf -mtime +7 -delete
但是子目录呢?
干杯
更换:
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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.