仅在工作日使用 ctime

Rij*_*hna 3 linux find xargs rm

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

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

find /my-folder/sub-folder/ -type d -ctime +1 | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 7

你可以这样做:

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

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

我添加了一个,-prune因为下降到您要删除和替换的目录是没有意义的,xargs这对于包含空格或反斜杠或带有标准-exec ... {} +替代引号的文件名会失败。

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