À l'aide de la ligne de commande, je souhaite créer un fichier journal avec la date d'aujourd'hui dans le nom (par exemple, aujourd'hui, nous sommes le 17/05/2011, le nom du fichier doit donc être log051711
).
Je sais comment créer le fichier (touch filename
), mais je ne sais pas comment obtenir la date du jour. J'ai regardé le manuel pour date
, mais il semble que je ne puisse pas vraiment formater sa sortie?
Toute aide serait appréciée.
Vous pouvez formater la sortie en utilisant le paramètre '+ FORMAT', par exemple.
touch "log$(date +'%m%d%y')"
Voir la page de manuel pour connaître les séquences que vous pouvez utiliser dans FORMAT.
Lancer la commande
echo "myfilename-"`date +"%d-%m-%Y"`
donne ceci comme sortie:
myfilename-21-02-2014
Je suis sûr que quelqu'un d'autre a un meilleur moyen de le faire, mais si vous voulez un mois-jour-année, cela devrait marcher:
touch log`date +%m%d%y`
et vous pouvez réorganiser les% m,% d,% Y pour refléter l'ordre que vous souhaitez. La page de manuel relative à la date vous en dit plus sur les formats supplémentaires.
Python peut aussi faire ce travail. Le petit script pour cela serait le suivant:
#!/usr/bin/env python
import time,os
date=time.gmtime()
month = str(date.tm_mon).zfill(2)
day=str(date.tm_mday).zfill(2)
year=str(date.tm_year)[-2:]
fname = 'log' + month + day + year
with open(fname,'a') as f:
os.utime(fname,None)
L'idée ici est simple: nous utilisons time.gmtime()
pour obtenir la date actuelle, extraire des champs spécifiques de la structure renvoyée, convertir les champs appropriés en chaînes et créer un nom de fichier avec le nom obtenu.
Essai:
$ ls
touch_log_file.py*
$ ./touch_log_file.py
$ ls
log010317 touch_log_file.py*
Au moment de l'écriture, nous sommes le 3 janvier 2017. Ainsi, le nom du fichier résultant est correctement mois, jour, année - log010317
Une des solutions possibles:
date +log%y%m%d | xargs touch
crée log111017