2017-10-12 3 views
0

Je souhaite supprimer tous les répertoires en dehors du répertoire de la date en cours. noms de répertoire sont prises comme la date dans ce format MM-JJ-AA si le nom du répertoire estSupprimer les dossiers en fonction du nom comme date en mm/jj/aa dans bash script

10-12-17

10-11-17

10-10-17 .. 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 

Pendant l'exécution de mon script, je reçois l'erreur suivante:

./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

Avez-vous accepté les bonnes nouvelles de ISO8601 dans votre cœur aujourd'hui? https://en.wikipedia.org/wiki/ISO_8601 –

+0

** s = $ (date +% m-% d-% y); mv $ s. $ s; rm -rf [0-9] [0-9] - [0-9] [0-9] - [0-9] [0-9]; mv. $ s $ s ** #pourquoi ne faites-vous pas cela? –

Répondre

1

Vous semblez essayer de vérifier une inégalité entre "11-10-17" et "111017" (l'un est un int et l'autre est une chaîne). Bash vous permettra de vérifier une inégalité de chaîne à l'aide ! =

#!/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: ligne 6: ((: 10-08: valeur trop grande pour la base (le jeton d'erreur est "08") ./script.sh: ligne 7: ((: 10-08: valeur trop grande pour base (le jeton d'erreur est "08") ./script.sh: ligne 6: ((:: 10-09: valeur trop grande pour la base (le jeton d'erreur est "09") ./script.sh: ligne 7: ((: 10-09: valeur trop grande pour la base (le jeton d'erreur est "09") –

+0

incapable de supprimer tous les dossiers script est seulement assez capable de supprimer quelques-uns.obtenir l'erreur ci-dessous pour les dossiers comme 10-08-17, 10 -08-17, 09-30-17 ./script.sh: ligne 6: ((: 10-08: valeur trop grande pour la base (le jeton d'erreur est "08") ./script.sh: ligne 7 : ((: 10-08: valeur trop grande pour la base (le jeton d'erreur est "08") ./script.sh: ligne 6: ((: 10-09: valeur trop grande pour la base (le jeton d'erreur est "09") ./script.sh: ligne 7: ((:: 10-09: valeur trop grande pour la base (le jeton d'erreur est "09") –

+0

./script.sh: ligne 6: ((: 10-08: valeur trop grande pour la base (le jeton d'erreur est "08") ./script.sh: ligne 7: ((: 10-08: valeur trop grande pour la base (le jeton d'erreur est "08") ./script.sh: ligne 6: ((: 10-09: valeur trop grande pour la base (le jeton d'erreur est "09") ./script.sh: ligne 7: ((: 10-09: valeur trop grande pour la base (le jeton d'erreur est "09") –