首页 > 解决方案 > 在特定目录路径中查找文件

问题描述

我正在尝试设置一个 cron 作业来删除服务器上某个路径中生成的旧文件。

我的问题是我只想清理cleanupdir在许多父目录中重复的命名中的旧文件。

写出所有这些非常耗时:

find ~/dir\ 1/cleanupdir/ -name *.htm -mtime +7 -delete
find ~/dir\ 2/cleanupdir/ -name *.htm -mtime +7 -delete
find ~/dir\ 3/cleanupdir/ -name *.htm -mtime +7 -delete
...

运行它会删除许多我想保留的文件

find ~/ -name *.htm -mtime +7 -delete

理想情况下,我想要路径通配符之类的东西,这样我就可以运行

find ~/*/cleanupdir/ -name *.htm -mtime +7 -delete

但这似乎不受支持

我的另一个尝试是做类似的事情

find ~/ *.htm -mtime +7 | grep /cleanupdir/ | xargs rm

但是dir 1etc 目录中的空格意味着这不起作用。

要么使用 bash 脚本,要么使用 find 的巧妙单行代码对我有用,正如我所说,它专门用于 cronjob。

标签: linuxbash

解决方案


您的最后一次尝试看起来不错,只是您需要引用通配符,以便 shell 不会将其扩展为*.htm当前目录中的文件列表。

find ~/*/cleanupdir/ -name '*.htm' -mtime +7 -delete

推荐阅读