일부 파일의 모든 타임스탬프를 현재 날짜로 변경하고 싶습니다. 사용해야 할 것 같지만 touch -A *
(다소, 더 복잡한 와일드카드 형식을 사용하게 될 것임) 다음 매개변수가 필요합니다.[-][[hh]mm]SS
위에 제공된 형식으로 이 작업을 수행하기 date
위한 인수로 올바른 형식의 출력을 제공하도록 호출을 유도하려면 어떻게 해야 합니까 ?touch
touch
답변1
파일의 ctime 변경에 대해 걱정하지 말 것을 제안합니다. 실제로 문제를 일으킬 가치는 없습니다(한두 달 전에 간단한 MP3 플레이어용 파일을 구성하는 스크립트를 작성할 때 발견한 것처럼). 그리고 에서 논의된 방법그래서 질문은위에 링크한 또 다른 간단한 방법이 있습니다. 파일을 임시 이름으로 복사하고 원본 파일을 삭제한 다음 임시 파일의 이름을 바꾸는 것입니다. 물론, 많은 수의 파일을 처리하려는 경우 디스크에 상당한 비용이 소요됩니다.
~에 따르면맨 페이지를 터치하세요-A
위의 don_crissti에서 제공한 버전에서 이 옵션의 목적 touch
은 다음을 적용할 수 있도록 하는 것입니다.시간 증가파일의 현재 mtime 및/또는 atime입니다. 따라서 이 -A
옵션을 사용하여 파일의 atime과 mtime을 설정한다는 것은 파일의 기존 atime과 mtime 사이의 시간 차이를 now
계산해야 한다는 것을 의미합니다 now
. 이는 제가 댓글에서 언급한 것처럼 불필요한 복잡함입니다.
파일 세트의 mtime 및 atime을 현재 시간으로 설정하는 가장 쉬운 방법은 기본 옵션과 함께 touch를 사용하는 것입니다. 또는 파일을 모두 갖고 싶다면정확히 똑같다때로는 파일을 먼저 터치한 다음 터치 옵션을 사용하여 나머지 파일에 대한 참조 파일로 사용할 수도 있습니다 -r
.
답변2
당신은 그것을 사용할 수 있습니다명령 대체이를 위해
$ touch -t $(date +%m%d%H%M) file
답변3
touch
macOS의 유틸리티에는 -A
다음을 수행할 수 있는 옵션이 있습니다.조정시간, 분 및/또는 초 단위의 파일 세트 수정 및 액세스 타임스탬프(각각 "mtime" 및 "atime")입니다. 댓글에서, 당신은 원하는 것 같아요놓다타임스탬프는 현재 시간이며 조정되지 않습니다. 따라서 이 -A
옵션은 잘못된 선택입니다.
파일 세트의 mtime 및 atime 타임스탬프를 현재 시간으로 변경하려면 다음을 사용하십시오.
touch -c pattern
pattern
액세스하려는 파일과 일치하는 패턴이 있습니다 . 이 -c
옵션을 사용하면 패턴이 일치하지 않거나 존재하지 않는 이름이 포함된 명시적 파일 목록을 제공하는 경우 파일이 생성되지 않습니다.
mtime 및 atime 타임스탬프 수정의 부작용으로 ctime 타임스탬프("inode 변경 타임스탬프")도 수정됩니다.
set btime("birthtimestamp" 여기서가능한"생성 타임스탬프"라고 부르는 것입니다.귀하의 의견에SetFile
), macOS에서 "파일 및 디렉터리의 속성 설정"을 위해 (사용되지 않는) 명령을 사용해야 할 수도 있습니다 .
SetFile -d "$(date +'%m/%d/%Y %H:%M:%S')" pattern
SetFile
동일한 날짜 스탬프 문자열과 -m
mtime을 업데이트하는 옵션을 사용하십시오 . 이런 방식으로 btime 또는 mtime을 설정하면 파일의 ctime도 업데이트됩니다. 유틸리티 SetFile
는 시간 타임스탬프를 업데이트하지 않거나 업데이트할 수 없습니다.