약 100개의 .jpeg 이미지가 있는데 해당 파일의 타임스탬프를 변경하고 싶습니다. 요일, 시간 등을 기준으로 타임스탬프를 수정하는 예를 많이 보았지만 touch
제 경우에는 작동하지 않습니다.
touch -d "-1969 days ago"
파일 중 하나에 사용해 보았지만 새로운 시간은 훨씬 늦은 2014년 5월 25일이 아니라 2021년 7월 10일입니다.
날짜 타임스탬프의 시간 부분(아래 예에서는 오후 2시 30분)을 유지하면서 디렉터리에 있는 모든 파일의 타임스탬프를 특정 날짜(2014-05-25)로 변경하는 방법이 있습니까?
예를 들어, 2009-01-02 02:30 PM은 타임스탬프를 2014-05-25 2:30 PM으로 변경합니다.
감사해요.
답변1
date
여기서는 GNU coreutils 와 의 조합을 사용할 수 있습니다 touch
.
내가 올바르게 이해했다면 HMS에서와 마찬가지로 특정 날짜가 필요하고 파일 시간을 유지해야 합니다. 각 파일은 설정되지 않습니다(예: 현재 값보다 300일 전).
2014-05-25
문자열을 파일에서 추출된 시간과 결합하여 이 시간을 생성 할 수 있습니다 date
. 예를 들면 다음과 같습니다.
$ date +"2014-05-25 %T.%N" -r file.jpg
2014-05-25 18:06:28.277679656
그런 다음 다음을 수행하여 결합하십시오.
for f in *.jpg; do touch -d "$(date +"2014-05-25 %T.%N" -r "$f")" "$f"; done
이는 DST 및 시간대를 방해할 수 있습니다.
%z
또 다른 접근 방식은 날짜 문자열의 끝이나 옵션에 추가하는 것 -u
입니다 date
.
TZ=UTC0 touch -d "$(date -u +"2014-05-25 %T.%N" -r "$f")"
시험
행동하기 전에 테스트하고, 테스트하고, 테스트하세요. 확인 ls --full-time
, 터치 대신 에코 등을 위한 find ... -printf
시간/날짜 옵션도 있습니다 .
시간을 텍스트 파일로 백업할 수도 있습니다.
노트:
질문에서 :
- 1969일 전은 2010년 9월 29일이었습니다.
- 1969년 이후의 날짜는 2021년 7월 11일입니다(적어도 내 시간대에서는).
- 현재 날짜 로부터 2014년 5월 25일을 얻으려면
"-1969 days ago"
2019년 10월 15일이어야 합니다.
문제 "-1969 days ago"
는 시간 앞에 마이너스 기호가 있다는 것입니다.
빼기 기호 + 빼기 기호 = 더하기 기호
빼기 기호를 제거하거나 제거하십시오. ago
부분.
1969 days ago
2010년 9월 29일입니다.-1969 days