J'ai un script bash qui prend l'argument d'une date (aaaa-mm-jj)
Je le convertis en secondes avec
startdate="$(date -d"$1" +%s)";
Ce que je dois faire, c’est itérer 8 fois, incrémentant à chaque fois la date de l’époque d’un jour et l’affichant ensuite au format mm-jj-aaaa
Utilisez la capacité de la commande date
pour ajouter des jours aux dates existantes.
Le suivant:
DATE=2013-05-25
for i in {0..8}
do
NEXT_DATE=$(date +%m-%d-%Y -d "$DATE + $i day")
echo "$NEXT_DATE"
done
produit:
05-25-2013
05-26-2013
05-27-2013
05-28-2013
05-29-2013
05-30-2013
05-31-2013
06-01-2013
06-02-2013
Remarque, cela fonctionne bien dans votre cas, mais d'autres formats de date tels que yyyymmdd peuvent avoir besoin d'inclure "UTC" dans la chaîne de date (par exemple, date -ud "20130515 UTC + 1 day"
)
startdate=$(date -d"$1" +%s)
next=86400 # 86400 is one day
for (( i=startdate; i < startdate + 8*next; i+=next )); do
date -d"@$i" +%d-%m-%Y
done
Une autre façon d’augmenter ou de diminuer les jours à partir d’aujourd’hui est un peu plus compact:
$ date %y%m%d ## show the current date
$ 20150109
$ ## add a day:
$ echo $(date %y%m%d -d "$(date) + 1 day")
$ 20150110
$ ## Subtract a day:
$ echo $(date %y%m%d -d "$(date) - 1 day")
$ 20150108
$
Il n’est pas si facile d’augmenter les jours. Normalement, cela se fait en convertissant la date grégorienne en un nombre de jours du calendrier Julien. Ensuite, vous pouvez incrémenter la journée. Et après cela, vous calculez la date grégorienne. Voici un exemple de code:
http://it.toolbox.com/wiki/index.php/Convert_a_date_to_a_Julian_day
http://it.toolbox.com/wiki/index.php/Convert_a_Julian_day_to_a_date
Incrémentez la date dans le script bash et créez une structure de dossiers basée sur Année, Mois et Date pour organiser le grand nombre de fichiers à partir d'une sortie de ligne de commande.
for m in {0..100}
do
folderdt=$(date -d "Aug 1 2014 + $m days" +'%Y/%m/%d')
procdate=$(date -d "Aug 1 2014 + $m days" +'%Y.%m.%d')
echo $folderdt
mkdir -p $folderdt
#chown <user>:<group> $folderdt -R
cd $folderdt
#commandline --process-date $procdate
cd -
done