Ich habe ein Problem mit meinem Datumsformat. Ich möchte von einem Format zum anderen wechseln und umgekehrt. Meine Datumsformate sind
Format 1
YYYY-MM-DD
Format 2
MM/DD/YYYY
Ich möchte Format 1 in Format 2 und Format 2 in Format 1 ändern.
Ich habe ein Problem mit meinem Datumsformat. Ich möchte von einem Format zum anderen wechseln und umgekehrt. Meine Datumsformate sind
Format 1
YYYY-MM-DD
Format 2
MM/DD/YYYY
Ich möchte Format 1 in Format 2 und Format 2 in Format 1 ändern.
Antworten:
Verwenden Sie dazu das GNU-Datum. Es wird auch zwischen anderen Formaten für Sie konvertiert (siehe date --help
für die Liste der Formate).
$ date -d 2013-07-05 +%m/%d/%Y
07/05/2013
$ date -d 07/05/2013 +%F
2013-07-05
Angenommen, Sie haben Daten in Textform, die konvertiert werden müssen
echo '2013-12-13' | awk -v FS=- -v OFS=/ '{print $2,$3,$1}'
Und umgekehrt
echo '12/13/2013' | awk -v FS=/ -v OFS=- '{print $3,$1,$2}'
date
Ansatz versuchen , der sicherlich eleganter ist
$ echo YYYY-MM-DD | { IFS=- read y m d && echo "$m/$d/$y"; }
MM/DD/YYYY
Wenn Sie eine Datei mit vielen dieser Daten haben, eine pro Zeile:
awk -F- -vOFS=/ '{print $2,$3,$1}' < that-file
Verwenden Sie sed wie folgt:
$ 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
Verwenden Sie eine Variante des Ansatzes von drawbenn, um die geklärte Frage in den Kommentaren zum Ändern des Datumsformats in einem Dateinamen zu beantworten gnu date
. Dieser Befehl findet alle Dateien im lokalen Ordner und leitet nur den Dateinamen an weiter xargs
, wobei der date
geänderte Dateiname als zweites Argument ersetzt wird, für mv
das die Umbenennung durchgeführt wird.
Die zusätzliche, leicht umständliche Verwendung der bash
Variablensubstitution ist erforderlich, bash
um den date
Befehl auszuwerten .
find ./ -printf '%f\n' | xargs -I '{}' sh -c 'mv $1 $(date -j -f %Y-%m-%d $1 +%m/%d%Y)' -- {} \;