2017-10-12 28 views
0

我想删除除当前日期目录以外的所有目录。 目录名称被当作日期在这个MM-DD-YY格式 所以目录名称是在bash脚本中删除基于名称的文件夹作为日期(mm/dd/yy)

17年10月12日

17年10月11日

17年10月10日 ..等

#!/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") 
+0

你今天接受ISO8601的好消息进入你的心脏? https://en.wikipedia.org/wiki/ISO_8601 –

+0

** s = $(日期+%m-%d-%y); mv $ s。$ s; rm -rf [0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9]; mv。$ s $ s **#为什么不这样做? –

回答

1

你似乎试图检查“11-10-17”和“111017”之间的不等(一个是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 
+0

./script.sh:第6行:((:10-08:对于基本值太大了(错误标记为“08”) ./script.sh:第7行:(((:10-08:值太大了(错误标记为“08”) ./script.sh:第6行:((:10-09:基值太差(错误标记为“09”) ./script.sh:第7行: ((:10-09:价值太大基地(错误标记为“09”) –

+0

无法删除所有文件夹。脚本只能够删除少数。获取下面提到的错误文件夹像10-08-17,10 -08-17,09-30-17。 ./script.sh:第6行:((:10-08:值太大,基数(错误标记为“08”) ./script.sh:第7行:((::10-08:对于基准值太大了(错误标记是“08”) ./script.sh:第6行:((:10-09:基值太高了(错误标记为“09” ) ./script.sh:第7行:((:10-09:对于基本值太大了(错误标记为“09”) –

+0

./script.sh:第6行:(((:10-08:值太大了(错误标记为“08”) ./script.sh:第7行:((:10-08:对于基准值太大了(错误标记为“08”) ./script.sh:第6行: ((:10-09:对于基准值太大(错误标记为“09”) ./script.sh:第7行:((:10-09:对于基准值太大了(错误标记为“09”)) –

相关问题