2017-10-12 72 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」)) –

相關問題