source open mac how bashrc bash_profile macos bash datetime bsd last-modified

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