删除名称超过 N 天的 YYYYMMDD 子目录

kst*_*pt3 2 bash directory find timestamps rm

我有一个目录,其中创建了每日子目录,字面上根据$date. 如何根据文件名中的 YYYYMMDD而不是元数据日期删除超过 7 天的文件夹及其内容?假设我有(为简洁起见跳过了一些):

20170817
20170823
20170828
20170901
Run Code Online (Sandbox Code Playgroud)

我最终会得到以下文件夹(这些文件夹应该保留):

20170828
20170901
Run Code Online (Sandbox Code Playgroud)

我创建了一个保存 7 天前日期的变量: dt_prev=$(date -d "`date`-7days" +%Y%m%d)

我的想法是ls -l列出这些文件夹名称并逐行比较,但这涉及清理该列表等,我认为必须有一种更简单的方法。

Jef*_*ler 5

我认为解决方案将是格伦杰克曼发布的内容的更简单版本,例如

seven_days=$(date -d "7 days ago" +%Y%m%d)
for f in [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]; do
   [ -d "$f" ] || continue
   (( $f < $seven_days )) && echo rm -r "$f"
done
Run Code Online (Sandbox Code Playgroud)

echo如果结果看起来正确,则删除。

-d测试确保我们只检查(删除)目录。