在特定目录路径中查找文件

时间:2018-07-19 15:07:49

标签: linux bash

我正在尝试设置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 1等目录中的空格表示此功能无效。

要么使用bash脚本,要么使用find的巧妙一行对我来说都是有效的,就像我说的是专门针对cronjob的。

2 个答案:

答案 0 :(得分:-1)

find ~ -name "*.htm" -wholename "*/cleanupdir/*" -mtime +7 -delete之类的东西怎么样?

答案 1 :(得分:-1)

您最后一次尝试看起来不错,除了需要引用通配符,以便外壳程序不会将其扩展到当前目录中的*.htm文件列表。

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