macos - open - source bash_profile
¿Fecha/hora modificada formateada del archivo en mac bash? (2)
En realidad es bastante simple, pero lo suficientemente diferente de la date
GNU que no es ni mucho menos obvio:
date -r $TIMESTAMP +%Y%m%dT%H%M%S
Para obtener stat
para hacer el formateo:
stat -f "%Sm" -t "%Y%m%dT%H%M%S" FILE
En mi script de bash en mac (snow leopard) tengo una ruta y un nombre de archivo, y necesito obtener la fecha / hora modificada de ese archivo. Descubrí que podía hacer:
stat -f "%m" $MYFILE
Sin embargo, eso devuelve lo que asumo es la fecha / hora de la época. Necesito la fecha / hora formateada: YYYYMMDDThhmmss
. He encontrado todo tipo de opciones (como la date
) que aparentemente dependen de GNU, que en mi mac no tengo.
¿Cuál es la forma estándar de modificar la fecha / hora de un archivo en un formato especificado por el usuario en mac (BSD?) Bash. O al menos, una función de formateo de fecha / hora a la que puedo pasar el resultado de mi llamada de stat
arriba.
# how-to list all the files and dir in a dir sorted by their
# modified time in the different shells
# usually mac os / Unix / FreeBSD stat
stat -f "%Sm %N" -t "%Y-%m-%d %H:%M:%S" ~/opt/comp/proj/*|sort
# STDOUT output:
# 2018-03-27 15:41:13 ~/opt/comp/proj/foo
# 2018-03-28 14:04:11 ~/opt/comp/proj/bar
# GNU Utils ( usually on Linux ) stat
# STDOUT output:
stat -c "%y %n" ~/opt/comp/proj/*|sort
# 2018-03-29 09:15:18.297435000 +0300 ~/opt/comp/proj/bar
# 2018-03-29 09:15:18.297435000 +0300 ~/opt/comp/proj/foo