파일 시스템에서 최근에 생성된 파일을 찾는 방법은 무엇입니까?

파일 시스템에서 최근에 생성된 파일을 찾는 방법은 무엇입니까?

자동 설치 프로그램에 의해 생성된 마지막 파일이 존재하는지 감지하여 자동 설치 프로그램의 완료를 추적하려고 하는데, 이를 위해서는 해당 파일이 어떤 파일인지 알아내야 합니다. 이를 수행할 수 있는 방법이 있습니까? 가장 가까운 곳을 찾는 방법에 대한 답변을 많이 찾았습니다.수정됨하지만 이러한 파일 중 다수는 설치 프로그램이 시스템에 추가한 순서와 다른 순서로 원래 작성자에 의해 수정되었기 때문에 작동하지 않습니다.

답변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이것이 귀하에게 적용되는지 확인하려면 사용 중인 시스템의 설명서를 확인해야 합니다 .

의견 중 하나는 실제 파일 생성 시간을 얻기 위해 확장명(비표준이라고도 함)이 있는 일부 파일 시스템을 언급했습니다. 이는 다음을 포함하여 수년에 걸쳐 다양한 시스템에서 발생했습니다.

더 관련성이 높은 토론이 있습니다.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'')에 대한 확장입니다.

다른 시스템에는 이 확장자가 없습니다. 토론을 위해:

관련 정보