Вычитание времени из даты создания / изменения файла в OSX - PullRequest
0 голосов
/ 06 ноября 2011

Я пытаюсь сдвинуть даты серии файлов на 9 часов. Я дошел до этого:

for i in *.MOV; do touch -r "$i" -d "-9 hours" "$i"; done

Это должно работать в современных системах, но команда touch в OSX выглядит несколько устаревшей и не поддерживает ключ -d.

Я использую Snow Leopard. Любая идея о лучшем варианте для этого с помощью однострочной команды? Я не хочу создавать сценарий для этого.

Ответы [ 3 ]

2 голосов
/ 07 ноября 2011

Хорошо, разобрались.OSX поставляется с командой gtouch, которая знает переключатель -d.Это часть GNU coreutils.

1 голос
/ 06 ноября 2011

Donno OS X, но это должно быть достаточно просто

get curr time stamp on the file
convert it to seconds
subtract 9 hours (9*60*60 secs) from it
convert it back to the format accepted by touch's -t option
run touch command

Все это, конечно, можно сделать в одном цикле for в командной строке.

Вот простые примеры из WikiPedia показывает конверсию туда и обратно.

# To convert a specific time stamp to Unix epoch time (seconds since 1970-01-01):
date +"%s" -d "Fri Apr 24 13:14:39 CDT 2009"
# 1240596879

# To convert Unix epoch time (seconds since 1970-01-01) to a human readable format:
date -d "UTC 1970-01-01 1240596879 secs"
# Fri Apr 24 13:14:39 CDT 2009

# Or:
date -ud @1000000000
# Sun Sep  9 01:46:40 UTC 2001

# or: Haven't tested this but should work..
date -d @1000000000 +%y%m%d%%H%M%S
# 010909014640
0 голосов
/ 06 ноября 2011

Глядя на страницу Википедии для Touch , кажется, что вы привыкли к GNU-версии Touch.Какой MacOS не использует.

Для того, что вы хотите сделать, посмотрите на команду «SetFile», которая устанавливается с помощью инструментов XCode.У вас есть опции -d и -m, которые сбрасывают даты и время создания и изменения соответственно.

http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/SetFile.1.html

...