现在我有一个cron作业,每周运行一次,为我查找和删除在此期间累积的文件。它是这样的:
find $DIR1 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7 >> /tmp/file.txt
但是,我想在服务器上的另一个目录中执行相同的操作(必须是$ DIR1和$ DIR2 - 在整个系统中从root执行查找是不可行的)但我觉得,在重复命令时会工作,这将是丑陋,多余和低效。
所以,我想以某种方式构建一个列表(即FILES =“file1 file2 file3”),并且有一个简化的方法来检查两个目录,然后像上面那样输出找到的文本文件的结果。
我不确定如何做到这一点 - 我想过可能会做一个循环,但这似乎太基本了。任何人都可以在这里给我一个骨头并指出我正确的方向吗?我担心的一件大事就是让它与find一起工作。
编辑:为了澄清,$ DIR2中的第二次搜索是针对超过14天的文件(mtime +14),因此只需将$ DIR2添加到现有字符串中就不起作用。
谢谢!
答案 0 :(得分:0)
你试过这个:
find $DIR1 $DIR2 -maxdepth 1 \( -name \file1-\* -o -name \*file2-\* \) -mtime +7 >> /tmp/file.txt
答案 1 :(得分: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;
OR
#!/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;