![在 OS X Lion 的 zsh 下,如何设置一个在 X 天后删除的 /Users/username/tmp 目录?](https://linux22.com/image/1316310/%E5%9C%A8%20OS%20X%20Lion%20%E7%9A%84%20zsh%20%E4%B8%8B%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%E4%B8%80%E4%B8%AA%E5%9C%A8%20X%20%E5%A4%A9%E5%90%8E%E5%88%A0%E9%99%A4%E7%9A%84%20%2FUsers%2Fusername%2Ftmp%20%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我对 OS X 上的脚本和常规工作还不熟悉,因此请提前感谢帮助。
我希望在我的主目录中有一个 tmp 目录,例如 /Users/username/tmp,我可以将其用作我的“下载”目录。
我的目标是让此目录中的文件/目录在 atime(上次访问)之后 10 天删除。
因此,我正在寻找一个脚本以及使用 ZSH 作为 shell 在 OS X Lion 上定期运行它的方法。
谢谢。
答案1
编写一个脚本,如果文件夹中的文件的访问时间早于十天前,则删除这些文件,然后每天运行该脚本(我不知道在 OSX 上最好的机制是什么;在 Linux 上我会使用 anacron,如果不行的话,我会使用 cron 每小时运行一次)。
示例脚本(以目录(例如 ~/downloads)作为第一个参数):
#!/bin/zsh
setopt extended_glob
targetpath=$1
[[ -d $targetpath ]] || (echo "Directory does not exist" 1>&2 && exit 1)
rm ${path}/**(.a+10) # ** will match recursively, and the bit in brackets is an
# extended glob qualifier, matching ordinary files with an atime more than ten days ago.
unsetopt extended_glob
exit 0
其中可能存在各种各样的问题,如果您习惯性地使用 extended_glob,那么您自然就不需要在脚本中打开它然后再关闭它。