linux / shell: altera o registro de data e hora de modificação de um arquivo relativamente?

19

Minha câmera produz arquivos como IMG_1234.JPG e MVI_1234.AVI com registros de data e hora nesses arquivos. Infelizmente, a hora não foi configurada corretamente e os timestamps estão desativados.

Gostaria de definir o registro de data e hora do arquivo no disco. (não os dados EXIF).

Algoritmo proposto:

1 read file's modify date
2 add delta, i.e. hhmmss (preferred: change timezone)
3 write new timestamp

Existe uma maneira fácil de fazer isso? talvez seja possível simplificar o cálculo usando o tempo de época (segundos desde) e agitar um script de shell.

    
por index 22.03.2010 / 19:48

6 respostas

33

touch pode fazer isso:

 $ ls -l something
-rw-rw-r-- 1 tgs tgs 0 2010-03-22 16:03 something
 $ touch -r something -d '-1 day' something 
 $ ls -l something 
-rw-rw-r-- 1 tgs tgs 0 2010-03-21 16:03 something

link

Para alterar o mtime, adicione --time=mtime

    
por 22.03.2010 / 21:05
10

Combinando o acima, se AM / PM estiver errado ...

Corrija as marcações de hora do arquivo:

#!/bin/sh
for i in all/*; do
  touch -r "$i" -d '-12 hour' "$i"
done

Em seguida, atualize as informações EXIF nos arquivos jpg para o registro de data e hora corrigido:

$ jhead -dsft *.jpg

Não se esqueça de corrigir a configuração da hora na sua câmera.

    
por 03.09.2012 / 10:31
2

itera todos os arquivos no subdiretório all: use stat para obter os arquivos epoch / unix time em segundos, deixe tocar a soma como nova data para mtime e escreva para o arquivo

#!/bin/sh
for i in all/*; do
  touch -m -d "$(stat -c %y "$i") + 3600 sec" "$i"
done

para uma abordagem pythonian, consulte o link

    
por 22.03.2010 / 23:31
2

Eu estou fazendo a mesma coisa no OS X, e a sintaxe do tato varia um pouco aqui.

Estou usando:

touch -r "filename" -A '013007' "filename"

Isso ajusta + 1hora 30min 7sec em relação ao horário original modificado. '-013007' para voltar o tempo.

    
por 16.03.2014 / 19:46
1

Linux, usando o toque para alterar o último registro de data e hora modificado:

Crie um arquivo com o timestamp de agora:

el@apollo:~$ touch myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Aug 22 09:25 myfile.txt

Altere o carimbo de data e hora para 2 horas atrás:

el@apollo:~$ touch -d "2 hours ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Aug 22 07:25 myfile.txt

Altere o carimbo de data / hora para ser 200 horas atrás:

el@apollo:~$ touch -d "200 hours ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Aug 14 01:25 myfile.txt

Altere o carimbo de data e hora para 30 dias atrás:

el@apollo:~$ touch -d "30 days ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Jul 23 09:25 myfile.txt
el@apollo:~$

Para travessuras, defina a data da última modificação no futuro:

el@apollo:~$ touch -d "-400000 days ago" myfile.txt
el@apollo:~$ ll myfile.txt
-rw-rw-r-- 1 el el 0 Oct 21  3012 myfile.txt

Aparentemente, nós vamos festejar como se fosse 3012 hoje à noite.

    
por 22.08.2014 / 15:27
0

Use jhead:

link

Adjust time stored in the Exif header by h:mm backwards or forwards. Useful when having taken pictures with the wrong time set on the camera, such as after travelling across time zones, or when daylight savings time has changed.

    
por 22.03.2010 / 20:12

Tags