web-dev-qa-db-fra.com

Obtenir la date du jour et l’utiliser dans le nom du fichier

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

10
Louis B.

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.

9
Florian Diesch

Lancer la commande

echo "myfilename-"`date +"%d-%m-%Y"`

donne ceci comme sortie:

myfilename-21-02-2014
2
Sreedhar GS

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.

0
Dason

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

0

Une des solutions possibles:

date +log%y%m%d | xargs touch

crée log111017

0
Sergey