자동 설치 프로그램에 의해 생성된 마지막 파일이 존재하는지 감지하여 자동 설치 프로그램의 완료를 추적하려고 하는데, 이를 위해서는 해당 파일이 어떤 파일인지 알아내야 합니다. 이를 수행할 수 있는 방법이 있습니까? 가장 가까운 곳을 찾는 방법에 대한 답변을 많이 찾았습니다.수정됨하지만 이러한 파일 중 다수는 설치 프로그램이 시스템에 추가한 순서와 다른 순서로 원래 작성자에 의해 수정되었기 때문에 작동하지 않습니다.
답변1
시간 변경에 동의합니다(a.k.a.시간)는 *nix 파일 시스템에서 볼 수 있는 가장 이식성이 뛰어난 기능이므로 OP에서 더 자세한 내용을 원할 수 있습니다.
POSIX<sys/stat.h>
파일 시스템의 각 파일, 디렉터리 및 장치에 대해 3개의 타임스탬프를 기록합니다.사용할 권리,개정하다그리고변경됨. 처음 두 개는 임의의 값으로 설정할 수 있습니다.utimes
(확장으로 표시되어 있지만 널리 사용 가능) 그러나 마지막 것은 그렇지 않습니다. utimes
가장 일반적으로 업데이트로 인해 발생할 가능성이 높지만 파일을 이동하거나 이름 chmod
을 바꾸는 것도 .
그러나 파일이 언제 생성되었는지에 대한 단서를 찾고 있다면,시간이것이 당신이 찾을 수 있는 가장 좋은 단서입니다. 액세스 시간도 유용하지만 일부 파일 시스템은 업데이트하지 않도록 구성할 수 있습니다. 처음 봐시간.
이것find
이 프로그램(POSIX에도 문서화되어 있음)에는 다음을 사용하는 옵션이 포함되어 있습니다.시간:
-ctime
N
파일 상태 정보가 마지막으로 변경된 시간을 초기화 시간에서 빼고 86400으로 나눈 경우 마스터는 true로 평가해야 합니다(나머지는 폐기됨).N.
86400
하루의 초 수를 나타냅니다 .N정수(일수)입니다. 일부 구현에서는 find
더 작은 단위를 제공하지만 POSIX에서는 사용할 수 없습니다.
지난 하루 동안 변경된 파일 목록을 얻으려면 다음과 같이 사용할 수 있습니다.
find . -ctime -1 -print
일부 구현에서는 정수가 아닌 값을 허용할 수 있습니다.N, 그러나 여기서 POSIX는 명시적입니다.
설명에 있어서 어디든N주요 논거로 사용되므로 다음과 같이 해석해야 합니다.십진수앞에 더하기 기호('+') 또는 빼기 기호('-')를 선택할 수 있습니다.
따라서 이 방향으로 POSIX 호환 확장을 갖는 것은 불가능합니다. 다른 구현에서는 시간 차이를 분 단위로 지정하는 대안을 제공할 수 있습니다. find
이것이 귀하에게 적용되는지 확인하려면 사용 중인 시스템의 설명서를 확인해야 합니다 .
의견 중 하나는 실제 파일 생성 시간을 얻기 위해 확장명(비표준이라고도 함)이 있는 일부 파일 시스템을 언급했습니다. 이는 다음을 포함하여 수년에 걸쳐 다양한 시스템에서 발생했습니다.
- VMS(나중에 이름이 변경됨)개방형 가상 관리 시스템), 그리고만들다,지원,개정그리고만료됨타임스탬프.
- 윈도우, 그리고만들다,사용할 권리그리고개정하다타임스탬프(이름은 비슷하지만업데이트 규칙POSIX와는 다릅니다).
더 관련성이 높은 토론이 있습니다.Linux에서 파일 생성 날짜를 얻는 방법은 무엇입니까?, 이는 구조체 st_birthtime
의 멤버를 나타냅니다 stat
. 이는 두 개의 OSX 매뉴얼 페이지에 문서화되어 있습니다.stat(2)
그리고 FreeBSDstat(2)
및 시스템별 FreeBSDstat(1)
및 운영 체제stat(1)
유용. (NetBSD도문서이 확장명). 최신 BSD 시스템의 기능이라고 합니다.
확장은 해당 find
유틸리티에서도 지원됩니다(예: OSX 참조).찾기(1)):
모두-비* 출생 시간관련된 것은 주로 IEEE Std 1003.1-2001(``POSIX.1'')에 대한 확장입니다.
다른 시스템에는 이 확장자가 없습니다. 토론을 위해:
- 답장: st_birthtime작성자: Eric Blake는 Windows가 이를 지원하지만 POSIX는 지원하지 않는다고 Cygwin 메일링 리스트에 언급했습니다.
- Linux: 파일 생성 날짜를 찾는 방법은 무엇입니까?게시자:스콧일부 파일 시스템은 다른 이름을 가진 유사한 기능을 지원한다는 점을 지적하십시오.