我有一个脚本可以删除过去两天之前创建的所有文件夹。现在,在星期一,它只删除上周的所有文件夹,这是我不想要的。
是否可以选择仅考虑此命令的工作日?整个脚本每天都会运行。我正在使用这个:
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
当修改目录中的文件或在子目录中添加或删除文件时,目录的 目录不会更新。