Obtenez la date du jour et utilisez-la dans le nom de fichier

10

En utilisant la ligne de commande, je veux créer un fichier journal avec la date d'aujourd'hui dans le nom (par exemple, aujourd'hui est 17/05/2011, donc le nom de fichier devrait être log051711).

Je sais comment créer le fichier ( touch filename), mais je ne sais pas comment obtenir la date d'aujourd'hui. J'ai regardé le manuel depuis date, mais il semble que je ne puisse pas vraiment formater sa sortie?

Toute aide serait appréciée.

Louis B.
la source

Réponses:

10

Vous pouvez formater la sortie en utilisant le paramètre '+ FORMAT', par exemple

touch "log$(date +'%m%d%y')"

Consultez la page de manuel pour connaître les séquences que vous pouvez utiliser dans FORMAT.

Florian Diesch
la source
Merde, 36 secondes trop lent. ;-)
htorque
1
Je viens de comprendre que pour l'utiliser dans un travail cron, je devais échapper aux signes%, pour qu'il se lise:touch "log$(date +'\%m\%d\%y')"
Louis B.
3

Exécuter la commande

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

donne ceci en sortie:

myfilename-21-02-2014
Sreedhar GS
la source
En fait, cela s'imprimera myfilename-date +%d-%m-%Y.
Adaephon
Vrai .. MyFileName est juste un préfixe .. Si nécessaire , nous pouvons le garder, sinon .. echo date +"%d-%m-%Y" cela suffit ... il sera imprimé seule date 21-02-2014
Sreedhar GS
Ah, maintenant je vois: je suis devenu confus parce que le `n'apparaissait pas dans votre réponse. En effet, ils sont utilisés par askubuntu pour indiquer des blocs de code. Vous devez marquer le code soit en l'entourant de crochets ou en mettant en retrait le paragraphe avec le code avec 4 espaces. Pour commencer, vous devriez probablement utiliser le menu au-dessus de l'éditeur et vérifier votre message dans l'aperçu sous la zone de texte avant de soumettre.
Adaephon
0

L'une des soultions possibles:

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

crée log111017

Sergey
la source
0

Je suis sûr que quelqu'un d'autre a une meilleure façon de le faire, mais en supposant que vous vouliez mois-jour-année, cela devrait fonctionner:

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 de date vous en dit plus sur les formats supplémentaires.

Dason
la source
0

Python peut également 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 qu'elle renvoie, convertir les champs appropriés en chaînes et créer un nom de fichier avec le nom résultant.

Essai:

$ ls
touch_log_file.py*
$ ./touch_log_file.py                                                                                             
$ ls
log010317  touch_log_file.py*

Au moment de la rédaction, c'est le 3 janvier 2017. Ainsi, le nom de fichier résultant est correctement mois, jour, année - log010317

Sergiy Kolodyazhnyy
la source