나는 Mac을 가지고 있으며 각 파일의 "생성", "추가", "수정" 및 "마지막으로 열린" 날짜와 함께 특정 디렉터리 및 해당 하위 디렉터리에 있는 모든 파일의 내용 목록을 만들어야 합니다.
다양한 스레드를 살펴보면 "ls" 또는 "stat" 명령을 사용하여 데이터 생성/추가/수정을 가져오는 방법을 알 수 있지만 모든 파일에 대한 마지막 열린 날짜 정보를 재귀적으로 가져오는 방법은 없습니다.
답변1
- 만들다: UNIX에 포함된 원래 파일 속성 중 하나는 아니지만 이 속성은 오늘날 많은 파일 시스템(MacOS, HFS+와 가장 관련이 있는 것을 포함)에서 사용할 수 있으며 다음과 같은 최신 버전의 도구에서 액세스 방법
ls
을stat
알고 있습니다ls -U
. 맨페이지에서).stat
B
- 다음에 추가: 이 자체로는 존재하지 않습니다. 파일이 포함된 디렉터리의 마지막 수정 시간을 사용하여 파일이 추가(생성 또는 이동), 삭제(제거 또는 이동)되거나 이름이 변경되었을 때 디렉터리가 마지막으로 수정된 시간을 알아낼 수 있습니다. 하지만 어느 것이었는지는 알 수 없으며 최근 사건에 대한 정보만 얻을 수 있습니다.
- 수정됨그리고마지막 액세스 시간: UNIX의 파일에 대한 원시 통계입니다. 대부분의 파일 시스템과 기본적으로 모든 도구 (문서에 설명된 대로 , , 및 사용)
ls -u
에서 지원stat
됩니다 . 모든 파일 액세스 시 디스크 쓰기를 저장하기 위해 마지막 액세스 타임스탬프 추적이 꺼지거나 조건부로 꺼지는 경우가 있습니다.a
m
당신이 언급하지 않은 또 다른 것이 있습니다.마지막 인덱스 노드 변경. 파일 내용이 아닌 파일 메타데이터가 마지막으로 변경된 시기를 추적합니다.
답변2
당신은 그것을 사용할 수 있습니다stat
명령은 파일에 대한 정보를 나열합니다. 이 명령은 파일에 대해 운영 체제에서 기록한 4개의 타임스탬프를 모두 나열합니다.
%a
: 액세스 시간(atime). 파일을 마지막으로 열거나 읽은 시간입니다(예: 내용 분석 또는 색인화).%m
: 수정 시간(mtime). 파일 내용이 마지막으로 수정된 시간입니다. 파일을 다른 곳에서 복사하거나 다운로드하는 경우 복사 시 mtime이 업데이트되는지 여부는 복사 방법에 따라 달라집니다.%c
:inode 변경 시간(ctime). 이 시간은 파일 읽기 이외의 작업(수정, 이름 변경, 이동, 권한 변경 등)이 발생할 때마다 업데이트됩니다.%B
: 출생시간(생성시간). 이는 일반적으로 파일이 생성되거나 다운로드된 시간이지만 일부 응용 프로그램의 경우 파일이 마지막으로 저장된 시간을 반영할 수 있습니다.
와 결합할 수 있습니다.find
이 명령은 파일을 재귀적으로 나열합니다. 예를 들어, 현재 디렉터리에 있는 모든 일반 파일의 타임스탬프와 이름을 나열하려면 다음을 사용합니다.
find . -type f -exec stat -f '%Sa %Sc %Sm %SB %N' {} \;