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