web-dev-qa-db-ja.com

Macのbash上のファイルのフォーマットされた変更された日付/時刻?

Mac(snow leopard)のbashスクリプトには、パスとファイル名があり、そのファイルの変更された日付/時刻を取得する必要があります。私は私ができることがわかりました:
stat -f "%m" $MYFILE

ただし、これはエポックの日付/時刻であると私が想定しているものを返します。日付/時刻の形式が必要です:YYYYMMDDThhmmss。どうやらGNUに依存していると思われるあらゆる種類のオプション(dateなど)を見つけましたが、私のMacにはありません。

Mac(BSD?)bashでユーザー指定の形式でファイルの日付/時刻を変更する標準的な方法は何ですか?または、少なくとも、上記のstat呼び出しの結果を渡すことができる日付/時刻の書式設定関数。

18
David Burson

これは実際には非常に単純ですが、GNU dateとは十分に異なるため、明らかとは言えません。

date -r $TIMESTAMP +%Y%m%dT%H%M%S

statを取得してフォーマットを行うには:

stat -f "%Sm" -t "%Y%m%dT%H%M%S" FILE
33
chepner
# 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
0
Yordan Georgiev