在 OS X Lion 的 zsh 下,如何设置一个在 X 天后删除的 /Users/username/tmp 目录?

在 OS X Lion 的 zsh 下,如何设置一个在 X 天后删除的 /Users/username/tmp 目录?

我对 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,那么您自然就不需要在脚本中打开它然后再关闭它。

相关内容