0

现在我有一个每周运行一次的 cron 作业,为我查找和删除在那段时间积累的文件。它是这样的:

find $DIR1 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7 >> /tmp/file.txt

但是,我想在服务器上的另一个目录中做同样的事情(必须是 $DIR1 和 $DIR2 - 在整个系统中从根目录进行查找是不可行的)但我觉得,虽然重复该命令会起作用,这将是丑陋的、多余的和低效的。

所以,我想以某种方式构建一个列表(即 FILES="file1 file2 file3"),并采用一种简化的方法来检查两个目录,然后将找到的结果输出到上面的文本文件中。

我不确定如何做到这一点 - 我想过可能会做一个循环,但这似乎太基本了。任何人都可以在这里给我一根骨头并指出我正确的方向吗?我担心的最重要的事情是让它与 find 一起工作。

编辑:澄清一下,$DIR2 中的第二次搜索是针对超过 14 天(mtime +14)的文件,因此仅将 $DIR2 添加到现有字符串中是行不通的。

谢谢!

4

2 回答 2

0

你有没有试过这个:

find $DIR1 $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7 >> /tmp/file.txt
于 2013-01-17T21:25:01.003 回答
0

编写 bash 脚本(即 delete_files.sh)并在 crontab 中添加 bash 脚本会容易得多。所以下一次,如果你想在不同的目录中添加更多的模式,那么你只需要在 bash 脚本中编写,它就会自动添加到 cronjob 中。

#!/usr/bin/bash

echo $(find $DIR1 $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7) >> /tmp/file.txt;

或者

#!/usr/bin/bash

echo $(find $DIR1 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7) >> /tmp/file.txt;
echo $(find $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7) >> /tmp/file.txt;
于 2016-12-01T19:25:31.900 回答