我有一组用户文件夹,他们可以在其中保存 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。
关于Linux - 删除(仅)嵌套目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49566930/