시험

시험

약 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 ago2010년 9월 29일입니다.-1969 days

관련 정보