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 --help
la 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}'
date
approche 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 date
approche 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 date
nom de fichier modifié en tant que deuxième argument mv
auquel effectuer le renommage.
L'utilisation supplémentaire, légèrement détournée de la bash
substitution de variables est nécessaire lors de l' bash
évaluation de la date
commande.
find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1 $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;