파일 생성 날짜 변경


62

Lion에서 파일 작성 날짜를 변경하는 방법을 알려주십시오. touch-t 명령이 있지만 Lion에서는 작동하지 않습니다. 몇 사람이 다른 방법을 언급했지만, 그들이 평신도 언어가 아닌 "코더"언어로 솔루션을 작성했다고 생각합니다.

도와 주셔서 감사합니다.


다른 사람들이 쓴 "코더"설명은 아마도 "터치"에 대한 언급 일 것입니다. 터미널을 열고 파일이있는 폴더로 이동 한 다음 touch 명령을 사용하여 파일의 생성 날짜를 수정해야합니다.
Derek Knight

2
FWIW "touch-t"가있는 올바른 행에 있지만 h와-사이에 공백이 있습니다. "touch -t"입니다
Derek Knight

답변:


95

touch -t일반적으로 수정 및 액세스 시간 만 변경합니다. 대상 시간이 원래 작성 시간 이전 인 경우에만 작성 시간을 변경합니다.

touch -t 199912312359 file.txt
touch -t $(date -jf %FT%T 1999-12-31T23:59:59 +%Y%m%d%H%M%S) file.txt

SetFile -d 항상 생성 시간을 변경합니다.

SetFile -d '12/31/1999 23:59:59' file.txt
SetFile -d "$(GetFileInfo -m test.txt)" file.txt

SetFile은 developer.apple.com/downloads 또는 Xcode의 환경 설정에서 다운로드 할 수있는 명령 행 도구 패키지의 일부입니다 .


4
수정 시간을 변경하기위한 -m.
AlikElzin-kilaka

5
Yosemite에서 touch를 터치하면 형식 +%Y%m%d%H%M.%S(분과 초 사이의 점에 주목) 을 사용해야했습니다.
Calimo

나는 다음과 같은 함수를 작성 CpCreationDate했다 fish.SetFile -d (GetFileInfo -m $argv[1]) $argv[2]
Pascal

15

Mac OS X에는 파일과 관련된 4 가지 타임 스탬프가있는 것으로 보입니다. 이 타임 스탬프는 항상 서로 독립적으로 업데이트되지 않습니다, 그러나 사람은 치료의 비트와 함께 및 사용과 일부 개별 제어 할 수 있습니다 touch, SetFilechown(또는 chmod). 이를 확인하려면 명령 프롬프트에서 새 파일을 실험하고 작성해 보겠습니다 #.

# touch a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

나열된 첫 번째 날짜는 마지막 액세스 시간 ( atime), 두 번째는 마지막 수정 시간 ( mtime), 세 번째는 마지막 상태 변경 ( ctime), 네 번째는 파일 작성 시간 (출생 시간)입니다 ( Btime참조) man lstat.

액세스 시간 ( atime)을 지정된 시간으로 수정하려면 다음을 사용하십시오.

# touch -a -t201412312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "May 19 00:11:14 2015" "May 19 00:11:46 2015" "May 19 00:11:14 2015" 4096 0 0 a.txt

수정 시간 ( mtime) 파일 작성 시간 ( Btime)을 지정된 시간으로 수정하려면 다음을 사용하십시오.

# touch -m -t201312312359.59 a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 2013" 4096 0 0 a.txt

분명히 이것은 또한 마지막 상태 변경 시간 ( ctime)을 현재 시스템 시간 으로 자동 업데이트합니다 !

생성 / 출생 시간 ( Btime) 만 주어진 시간으로 수정하려면 위의 다른 사람이 제안한대로 사용하십시오.

# SetFile -d "12/31/1999 23:59:59" a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:12:19 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

마지막 상태 변경 시간 ( ctime) 만 현재 시스템 시간으로 수정하려면 다음과 같이 사용하십시오.

# chown username a.txt
# stat a.txt
16777218 5969798 -rw-r--r-- 1 username staff 0 0 "Dec 31 23:59:59 2014" "Dec 31 23:59:59 2013" "May 19 00:13:45 2015" "Dec 31 23:59:59 1999" 4096 0 0 a.txt

where username는 파일의 소유자입니다 ( stat또는 로보고 ls -l). 이것은 파일의 소유권을 변경하지 않지만 파일의 inode에 액세스하여 마지막 상태 변경 시간으로 기록합니다. 불행히도 컴퓨터의 시간을 변경하는 것 이외의 시간을 명시 적으로 지정할 수는 없습니다 ...

요약하면, 4 개의 타임 스탬프를 독립적으로 변경할 수 있도록 다음을 사용할 수 있습니다 (마지막 3 개의 순서로).

  1. touch -a -tCCYYMMDDHH.SS <file>
  2. touch -m -tCCYYMMDDHH.SS <file>
  3. SetFile -d "MM/DD/CCYY HH:MM:SS" <file>
  4. [시스템 날짜 설정] chown username <file>[일반 시스템 날짜로 되돌리기]

(물론 시스템 날짜를 재설정해도 위험이없는 작업이 아닐 수 있습니다. 경고가 표시되었습니다.)


+1이 매우 자세한 답변에 감사드립니다. 이것은 나의 모든 고민을 해결했다.
Govind Rai

13

명령 줄 touch명령은 Lion에서 작동하지만 사용 방법에 대한 약간의 배경 지식이 필요합니다.

먼저, 입력해야합니다. 이것은 창에서 그래픽으로 작동하는 유틸리티가 아닙니다. 입력 한 장소는 터미널 이라는 앱 입니다. 유틸리티 폴더에서 이것을 찾거나 Spotlight 검색을 사용하여 찾을 수 있습니다.

시작하면 명령을 입력 할 수있는 명령 행 창이 나타납니다. 타이핑한다고해서 코딩과 관련이있는 것은 아니지만 "구식"OS 명령을 처음 접하는 사람에게는 조금 위협적인 것처럼 보일 수 있습니다.

따라서 명령을 touch 라고 하며 명령 뒤에는 파일 이름 만 필요한 다양한 매개 변수를 전달할 수 있습니다. 다음을 입력하면 파일의 마지막 수정 날짜가 현재 시간으로 설정됩니다.

touch filename

물론 파일을 먼저 찾아야 할 수도 있습니다. 파일을 가져 오려면 추가 명령이 필요할 수 있습니다. CD 또는 디렉터리 변경 명령은 여기에 있습니다 :

cd ~/Desktop/files/PDFs
touch filename

또는 명령의 일부로 파일의 전체 경로를 간단히 추가 할 수 있습니다.

touch ~/Desktop/files/PDFs/filename

touch 명령의 고급 사용법을 사용하면 실행 시간을 사용하지 않고 수정 시간 대신 액세스를 설정하는 대신 설정하려는 시간을 지정할 수 있습니다. 이는 -t 및 기타와 같은 매개 변수 입니다. 일부는 시간을 다른 파일의 시간으로 설정하고 일부는 X 양만큼 시간을 앞뒤로 이동하도록 설정합니다 ( 자세한 내용 은 여기 참조).

touch -d '1 May 2005 10:22' file8

다음은 이 페이지에서 가져온 참고 자료이며 명령 줄의 파일 위치가 불편한 사용자를위한 유용한 정보를 제공하는 훌륭한 예입니다.

입력 한 날짜 이후에 파일이 작성된 경우에만 수정 한 날짜와 작성된 날짜 속성이 모두 변경됩니다. 파일을 작성하기 전에 수정할 수 없기 때문입니다. 설정 한 날짜 이전에 생성 된 경우 수정 된 날짜 만 변경됩니다.

파일의 날짜 생성 속성을 변경하는 방법은 무엇입니까?

  1. 터미널 응용 프로그램 ( /Applications/Utilities/Terminal.app)을 열거 나 iTerm을 사용하려는 경우.

  2. 다음과 같은 형식으로 날짜를 입력하여 터미널에 입력하십시오 (Enter / Return 키를 누르지 않음) YYYYMMDDhhmm.

    touch -t 201212211111
    
  3. Finder 윈도우를 열고 수정하려는 파일을 찾아 터미널 윈도우에 끌어다 놓으면 명령 줄 용어를 사용하여 파일 위치를 삽입합니다. 이 시점에서 터미널에 입력해야 할 내용의 예는 다음과 같습니다.

    touch -t 201212211111 /Volumes/Mac\ HD/Pictures/somefile.jpg
    

    위 예에서 201212211111은“2012 년 12 월 21 일 오전 11시 11 분을 나타냅니다.


2
그러나 touch파일 작성 날짜가 아니라 수정 날짜를 수정합니다.
다니엘

1
둘 다 할 수 있습니다. 매개 변수에 따라 다릅니다.
stuffe

2
touch위에서 지정한 매개 변수를 사용하면 테스트 파일의 생성 날짜가 아닌 수정 날짜가 변경되었습니다.
Daniel

2
@Daniel 당신은 probablly 답을 가지고 있지만, 완성도 연고로 touch 않습니다 인수에 따라 작성 날짜를 수정합니다. 파일 작성 날짜 이전의 수정 날짜를 제공하면 파일을 작성하기 전에 파일을 수정할 수 없으므로 작성 날짜가 새 수정 날짜 값으로 자동 변경됩니다.
Govind Rai

2
나는 이것을 Sierra에서 시도했으며 touch 는 날짜를 변경 하지 않습니다creation . 나는 변화 할 수 있었다 access그리고 modified는 "과거의 일"로 날짜 있지만, 생성 날짜를 수정하지 않았다. 매뉴얼 페이지를 확인하십시오. 작성 날짜는 언급되지 않았습니다. 파일 시스템 : Mac OS 확장 (저널링, 암호화). 사용 SetFile -d "$(GetFileInfo -m test.txt)" file.txt은 완벽하게 작동했습니다.
Jonathan Cross

7

여기에 위대한 힌트, 특히 마지막 힌트가 있습니다 (Lauri Ranta의 8 월 21 일 15:21에 대답). 완벽 해!

이제 간단한 Automator Workflow를 사용하여 여러 파일을 일괄 변경합니다.

  1. 선택된 파인더 항목 가져 오기
  2. "Pass 입력 : 인수로"쉘 스크립트를 실행하십시오.

쉘 스크립트는 다음과 같습니다.

for f in "$@"
do
    SetFile -d "$(GetFileInfo -m "$f")" "$f" 
done

이것은 매력처럼 작동합니다.


0

내가 찾은 가장 쉬운 방법은 새 폴더를 만들고 회색으로 표시된 폴더의 모든 하위 폴더를 새 폴더에 복사하고 새 폴더는 회색으로 표시되지 않는 것입니다. 파인더에서이 작업을 수행 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.