Обратите внимание, что я не спрашиваю, как изменить дату создания группы файлов на данную дату. Я хочу сдвинуть дату на указанное количество времени, например 47732400 секунд.
Могу ли я сделать это с помощью touch
или что-то еще в BASH?
Touch только изменяет время создания, если целевое время модификации предшествует первоначальному времени создания.
for f in ~/Desktop/*; do
old=$(stat -f %B -t %s "$f")
touch -t $(date -r $(($old - 1234567)) +%Y%m%d%H%M%S) "$f"
done
SetFile всегда меняет время создания. Он поставляется с пакетом инструментов командной строки, который можно загрузить из настроек XCode или с веб-сайта Apple .
for f in ~/Desktop/*; do
old=$(stat -f %B -t %s "$f")
new=$(date -r $(($old + 1234567)) '+%m/%d/%Y %H:%M:%S')
SetFile -d "$new" -m "$new" "$f"
done
stat -f %B -t %s
: форматировать время рождения, время форматировать секунды с начала эпохи
date -r
: переформатировать секунды с начала эпохи
touch -t
: изменять время доступа и модификации
SetFile -d
: изменять время создания
old=$(stat -c %Y "$f")
иtouch -t $(date -d @$(($old - 47732400)) +%Y%m%d%H%M.%S) "$f"
.Повторное использование и расширение предыдущего ответа для изменения даты в файлах со справочным файлом / датой (старая версия GoPro всегда сбрасывает время на 2009 ...)
источник