리눅스 / 쉘 : 파일 수정 타임 스탬프를 상대적으로 변경 하시겠습니까?


20

내 카메라는 같은 파일을 생성 IMG_1234.JPG하고 MVI_1234.AVI그 파일에 타임 스탬프와 함께. 불행히도 시간이 올바르게 설정되지 않았고 타임 스탬프가 꺼져 있습니다.

파일의 타임 스탬프를 디스크에 설정하고 싶습니다. (EXIF 데이터가 아님).

제안 된 알고리즘 :

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

이 작업을 수행하는 쉬운 방법이 있습니까? 아마도 에포크 시간 (초 이후)을 사용하여 계산을 단순화하고 쉘 스크립트를 채울 수 있습니다.


키워드는 mtime입니다. 그러나 unixtutorial.org/2008/11/…에
index

답변:


37

touch 이것을 할 수 있습니다 :

 $ 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

http://linux.about.com/library/cmd/blcmdl_touch.htm

mtime을 변경하려면 다음을 추가하십시오. --time=mtime


예, 그러나 이것은 파일의 시간이 아닌 현재 시스템 시간과 관련이 있습니다.하지만 감사합니다.
index

1
내가 처음 대답했을 때 예,하지만 답을 편집했습니다. -r file옵션 을 사용하면 해당 파일을 기준으로합니다. 따라서 조작하는 파일과 상대적으로 시간이 맞으면 원하는 것을 얻을 수 있습니다.
rescdsk

훌륭합니다, 감사합니다 정확히 내가 찾던 것.
Artem Russakovskii

@rescdsk, 단지 curisoity에서이 변화가 파일의 법 의학적 분석에 어떤 영향을 미치겠습니까? 파일을 수정했지만 수정 된 날짜를 이전 값으로 다시 설정하면 inode 또는 다른 파일 시스템 메타 데이터에서이를 감지 할 수 있습니까? 저널링이이 분석에 영향을 줍니까?
Frank Thomas

@ FrankThomas, 죄송합니다. 실마리가 없습니다!
rescdsk

11

위와 같이 AM / PM이 잘못되었을 경우 ...

파일 타임 스탬프를 수정하십시오.

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

그런 다음 jpg 파일의 EXIF ​​정보를 수정 된 타임 스탬프로 업데이트하십시오.

$ jhead -dsft *.jpg

카메라의 시간 설정을 수정하는 것을 잊지 마십시오.


2

서브 디렉토리 all의 모든 파일을 반복합니다. stat를 사용하여 파일을 epoch / unix 시간으로 초 단위로 가져 오십시오.

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

파이썬 접근 방식은 https : //.com/questions/1158076/implement-touch-using-python을 참조 하십시오.


명확히하기 위해, 이것은 corutil의 날짜 파서가 상대적이고 의미있는 시간을 받아 들일뿐만 아니라 실제로 계산할 수 있음을 의미합니다! 설명서 ( gnu.org/software/coreutils/manual/… ) 에서 해당 정보를 찾지 못했을 때 지적했습니다. [실제 위치 : "상대 항목은 날짜 (또는없는 경우 현재 날짜)를 앞뒤로 조정합니다. 관련 항목의 효과가 누적됩니다. "]
index

2

나는 OS X에서 똑같은 일을하고 있으며 터치의 구문은 여기에서 약간 다릅니다.

나는 사용하고있다 :

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

원래 수정 시간을 기준으로 +1 시간 30 분 7 초를 조정합니다. '-013007'시간을 되돌려주었습니다.


참고 사항 : 아무것도 아닌 것보다 낫지 만이 구문은 스크립팅의 악몽입니다.
tuomassalo

그것이 바로 내가 찾던 것입니다 (RTFM : D에 너무 게으르다). 감사!
Michele Dall'Agata

1

터치 수정을 사용하여 마지막으로 수정 된 타임 스탬프를 변경하는 Linux :

타임 스탬프가 지금 인 파일을 작성하십시오.

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

타임 스탬프를 2 시간 전으로 변경하십시오.

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

타임 스탬프를 200 시간 전으로 변경하십시오.

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

타임 스탬프를 30 일 전으로 변경하십시오.

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:~$

shenanigans의 경우 향후 마지막 수정 날짜를 설정하십시오.

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

분명히, 오늘 밤 1212처럼 파티를 열 예정입니다.


마지막 "미래"예제의 경우 마이너스 ( -)가 터치로 과거에 400,000 일이 지난 다고 말하지 는 않지만 앞으로는 끝날까요? 아니면 잠깐, 당신은 마이너스 + 전 = 미래 ... Yar
matey

0

jhead 사용 :

http://www.sentex.net/~mwandel/jhead/usage.html

Exif 헤더에 저장된 시간을 앞뒤로 h : mm 씩 조정하십시오. 시간대를 여행 한 후 또는 일광 절약 시간이 변경된 경우와 같이 카메라에 설정된 시간이 잘못되어 사진을 촬영할 때 유용합니다.


팁을 주셔서 감사합니다. 이것은 exif 및 exifTool과 비슷하며 digiKam의 "날짜 및 시간 조정"기능과 비슷하지만 파일의 시스템 날짜를 수정하고 싶습니다. 또 다른 문제는 내 스마트 OS가 실시간으로 시간을 현지 시간으로 변환하는 것으로 보이며 DST가 한 시간대에서 시작된 것입니다 :-)
index
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.