shell 脚本匹配日期

我的shell的版本是bash
我有一个目录/root/data
里面有若干个子文件夹,这些文件夹的命名是以日期命名的比如
2019-03-12
我现在有个需求是删除七天前的文件夹,不知道怎么把七天前的文件夹找出来。
比如现在有
2019-03-26
2019-03-25
2019-03-24
2019-03-23
2019-03-22
2019-03-21
2019-03-20
2019-03-19
2019-03-18
我现在要写一个脚本,把2019-03-19和2019-03-18文件夹删除,因为他们是七天前的。删除到简单,就是不知道怎么找到七天前的所有文件夹

阅读 3.5k
2 个回答

排序,再取最后7行前面所有的行

ls | sort | head -n -7 | xargs -r rm -rf

clipboard.png

随手写了一下,应该能达到要求,采纳加个点赞吧,哈哈哈

#!/bin/bash

RemoveDir=/home/wwwroot/test 
dt=`date +%Y-%m-%d -d "6 days ago"` 
for subdir in `ls $RemoveDir`; 
do 
  if [ "${subdir}" \< "${dt}" ]; 
    then 
        #echo $subdir;
        rm -rf $subdir > /dev/null 
    echo "The directory $RemoveDir/$subdir has been removed."
  fi 
done 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题