J'essaie d'exécuter une commande et je voudrais mettre la date et l'heure dans le nom du fichier de sortie.
Voici un exemple de commande que j'aimerais exécuter.
md5sum /etc/mtab > 2016_4_25_10_30_AM.log
Le format de la date et de l'heure peut être quelque chose de sensé avec des soulignements. Même UTC si l'AM et PM ne peuvent pas être utilisés.
Si vous souhaitez utiliser la date/heure actuelle comme nom de fichier, vous pouvez utiliser date
et substitution de commande .
$ md5sum /etc/mtab > "$(date +"%Y_%m_%d_%I_%M_%p").log"
Il en résulte le fichier 2016_04_25_10_30_AM.log
(bien que, avec l'heure actuelle) soit créé avec le hachage md5 de /etc/mtab
comme son contenu.
Veuillez noter que les noms de fichiers contenant des horodatages au format 12 heures ne seront probablement pas triés par nom comme vous le souhaitez. Vous pouvez éviter ce problème en utilisant des horodatages au format 24 heures à la place.
Si vous n'êtes pas obligé d'utiliser ce format de date spécifique, vous pouvez envisager d'utiliser un format datetime compatible ISO 8601. Voici quelques exemples de génération de représentations datetime ISO 8601 valides:
$ date +"%FT%T"
2016-04-25T10:30:00
$ date +"%FT%H%M%S"
2016-04-25T103000
$ date +"%FT%H%M"
2016-04-25T1030
$ date +"%Y%m%dT%H%M"
20160425T1030
Si vous voulez des noms de fichiers "plus sûrs" (par exemple, pour la compatibilité avec Windows), vous pouvez omettre les deux-points de la portion de temps.
Veuillez garder à l'esprit que les exemples ci-dessus supposent tous l'heure du système local. Si vous avez besoin d'une représentation horaire cohérente entre les fuseaux horaires, vous devez spécifier un décalage de fuseau horaire ou UTC. Vous pouvez obtenir un décalage de fuseau horaire conforme à la norme ISO 8601 en utilisant "% z" dans la partie format de votre appel date
comme ceci:
$ date +"%FT%H%M%z"
2016-04-25T1030-0400
Vous pouvez obtenir l'heure UTC dans votre appel date
en spécifiant le -u
flag et en ajoutant "Z" à la fin de la chaîne datetime pour indiquer que l'heure est UTC comme ceci:
$ date -u +"%FT%H%MZ"
2016-04-25T1430Z