在bash脚本中删除基于名称的文件夹作为日期,单位为mm / dd / yy

时间:2017-10-12 13:13:42

标签: linux bash shell ubuntu

我想删除当前日期目录以外的所有目录。 目录名称以此MM-DD-YY格式作为日期 所以目录名是

17年10月12日

17年10月11日

17年10月10日 ..etc

    #!/bin/bash
    echo Hello World!

    one_day=$(date -d "1 days ago" +%m%d%y)
    for f in [0-9][0-9]-[0-9][0-9]-[0-9][0-9]; do
    [ -d "$f" ] || continue
    (( $f < $one_day )) &&  sudo rm -rf "$f"
    done

运行我的脚本时出现以下错误:

./script.sh: line 9: ((: 10-08: value too great for base (error token is "08")

./script.sh: line 9: ((: 10-09: value too great for base (error token is "09")

1 个答案:

答案 0 :(得分:1)

你好像在试图检查&#34; 11-10-17&#34;之间的不平等。和&#34; 111017&#34; (一个是int,另一个是字符串)。 Bash将允许您使用!=

检查字符串不等式
#!/bin/bash

one_day=$(date -d "1 days ago" +%m-%d-%y)
for f in [0-9][0-9]-[0-9][0-9]-[0-9][0-9]; do
  [ -d "$f" ] || continue
  [ "$f" != "$one_day" ] && sudo rm -rf "$f" && echo "$f" && continue
  [ "$f" == "$one_day" ] && echo "Leaving $f"
done