我正在尝试设置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的。
答案 0 :(得分:-1)
find ~ -name "*.htm" -wholename "*/cleanupdir/*" -mtime +7 -delete
之类的东西怎么样?
答案 1 :(得分:-1)
您最后一次尝试看起来不错,除了需要引用通配符,以便外壳程序不会将其扩展到当前目录中的*.htm
文件列表。
find ~/*/cleanupdir/ -name '*.htm' -mtime +7 -delete