仅在工作日使用 ctime

仅在工作日使用 ctime

我有一个脚本可以删除过去两天之前创建的所有文件夹。现在,在星期一,它只删除上周的所有文件夹,这是我不想要的。

是否可以选择仅考虑此命令的工作日?整个脚本每天都会运行。我正在使用这个:

find /my-folder/sub-folder/ -type d -ctime +1 | xargs rm -rf

答案1

你可以这样做:

find /my-folder/sub-folder/ -type d -ctime "+$((
  1 + 2 * ($(date +%u) <= 2) ))" -prune -exec echo rm -rf {} +

也就是说,如果当前日期是 1(星期一)或 2(星期二)(假设您仅在工作日运行该脚本),则添加 2 天。

我添加了一个,-prune因为进入您正在删除和替换的目录是没有意义的,xargs因为对于包含空格或反斜杠或引号的文件名,使用标准-exec ... {} +替代方案会失败。

请注意,ctime当修改目录中的文件或在子目录中添加或删除文件时,目录的 目录不会更新。

相关内容