J'ai un problème avec mon format de date. Je souhaite passer d'un format à l'autre et vice versa. Mes formats de date sont
Format 1
YYYY-MM-DD
Format 2
MM/DD/YYYY
Je veux changer le format 1 au format 2 et le format 2 au format 1.
J'ai un problème avec mon format de date. Je souhaite passer d'un format à l'autre et vice versa. Mes formats de date sont
Format 1
YYYY-MM-DD
Format 2
MM/DD/YYYY
Je veux changer le format 1 au format 2 et le format 2 au format 1.
Réponses:
Utilisez GNU 'date' pour cela. Il convertira également entre d'autres formats pour vous (voir date --helpla liste des formats).
$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05
En supposant que vous ayez des dates sous forme de texte qui doivent être converties
echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'
Et vice versa
echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'
dateapproche de drewbenn , qui est certainement plus élégante
$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY
Si vous avez un fichier avec beaucoup de ces dates, un par ligne:
awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file
En utilisant sed comme suit:
$ echo '2013-12-13' | sed -r 's/([[:digit:]]{2,4})-([[:digit:]]{1,2})-([[:digit:]]{1,2})/\2\/\3\/\1/g'
12/13/2013
$ echo '12/13/2013' | sed -r 's/([[:digit:]]{1,2})\/([[:digit:]]{1,2})\/([[:digit:]]{2,4})/\3-\1-\2/g'
2013-12-13
Pour répondre à la question clarifiée dans les commentaires sur la façon de modifier le format de date dans un nom de fichier, utilisez une variante de l' gnu dateapproche de drewbenn . Cette commande recherche tous les fichiers dans le dossier local et redirige uniquement le nom du fichier vers xargs, en remplaçant le datenom de fichier modifié en tant que deuxième argument mvauquel effectuer le renommage.
L'utilisation supplémentaire, légèrement détournée de la bashsubstitution de variables est nécessaire lors de l' bashévaluation de la datecommande.
find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1 $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;