Como posso mudar a data de criação dos arquivos no OS X 10.6.8?

5

Por favor, note que não estou perguntando como alterar a data de criação de um monte de arquivos para uma determinada data. Eu quero mudar a data em um determinado período de tempo, por exemplo, 47732400 segundos.

Posso fazer isso usando touch ou algo mais no BASH?

    
por bernk 24.10.2012 / 20:34

2 respostas

5

toque apenas altera a hora de criação se a hora de modificação do alvo for anterior à hora da criação original.

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 sempre altera o horário de criação. Ele vem com o pacote de ferramentas de linha de comando que pode ser baixado das preferências do Xcode ou do site da 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 : format time de nascimento, formato de hora segundos desde epoch
date -r : formatar segundos desde epoch% touch -t : alterar tempos de acesso e modificação SetFile -d : alterar tempo de criação / p>     

por 25.10.2012 / 17:38
0

Reutilizando e aprimorando uma resposta anterior para alterar as datas dos arquivos com um arquivo / data de referência (a antiga GoPro sempre redefiniu seu tempo para 2009 ..)

ref_file=GOPR3440.MP4
new_time_for_that_file=0327160015 #date's format: 27th March 2015, 16:00

ref_file_timestamp='stat -f %B -t %s "$ref_file"'
new_time_timestamp='date -j $new_time_for_that_file +%s'
time_diff=$[$new_time_timestamp - $ref_file_timestamp]

for f in *; do
    old=$(stat -f %B -t %s "$f")
    new=$(date -r $(($old + $time_diff)) '+%m/%d/%Y %H:%M:%S')
    SetFile -d "$new" -m "$new" "$f"
done
    
por 28.03.2015 / 02:50