이것은 조사하기 쉬운 질문처럼 들립니다. 그러나 실제로는 그렇지 않습니다. 나는 내가 만난 Ubuntu Stack Exchange 웹 사이트에서 다음과 같은 강력 추천 게시물을 따르고 있었습니다. 그러나 이 제안은 Red Hat Enterprise Linux ES 버전 4에서는 작동하지 않습니다. 나는 그것이 작동하기를 바랐지만 아래 설명처럼 실패했습니다.
이것은제안: 구체적으로는 포스터 추천
기존 수정 시간을 기준으로 파일을 수정하려면 다음을 수행할 수 있습니다.
touch -d "$(date -R -r 파일 이름) - 2시간" 파일 이름
이것은 Redhat에서는 작동하지 않습니다. 빼기 기호는 무시하고 제가 입력한 대로 시간이 이틀 앞으로 설정됩니다.
touch -d "$(date -R -r filename) + 2 hours" filename
예를 들어:
$ ls -al test
-rw-r----- 1 sc1478 dev 5 Oct 27 12:59 test
$ touch -d "$(date -R -r test) - 8 days" test
$ ls -al test
-rw-r----- 1 sc1478 dev 5 Nov 4 2016 test
$ touch -d "$(date -R -r test) + 8 days" test
$ ls -al test
-rw-r----- 1 sc1478 dev 5 Nov 12 2016 test
빼기 기호를 사용하든 더하기 기호를 사용하든 날짜는 앞으로 조정됩니다.
이것은 일부 터치 버전의 버그입니까?
현재 타임스탬프를 기준으로 파일의 타임스탬프를 조정하는 다른 방법이 있습니까?
답변1
답변 업데이트
touch -r filename -d '+8 days' filename
보낸 사람 info coreutils touch invocation
(@don_crissti에게 감사드립니다):
'-r 파일'
'--참조=파일'
Use the times of the reference FILE instead of the current time. If this option is combined with the '--date=TIME' ('-d TIME') option, the reference FILE's time is the origin for any relative TIMEs given, but is otherwise ignored. For example, '-r foo -d '-5 seconds'' specifies a time stamp equal to five seconds before the corresponding time stamp for 'foo'. If FILE is a symbolic link, the reference timestamp is taken from the target of the symlink, unless '-h' was also in effect.
변수 확장을 원할 경우 -d
이와 같이 매개변수 주위에 작은 따옴표를 사용할 수 있습니다.
DAYS=8
touch -r filename -d "+${DAYS} days" filename
견본:
$ ls -l foo.bar
-rw-r--r-- 1 usr usr 69414810 Nov 10 2016 foo.bar
$ TEST=100
$ touch -r foo.bar -d "+${TEST} days" foo.bar
$ ls -l foo.bar
-rw-r--r-- 1 usr usr 69414810 Feb 24 2017 foo.bar