설명하다

설명하다

디렉터리나 하위 디렉터리 중 하나에 있는 파일 이름을 잊어버렸습니다. 파일 확장자(.nb)를 기억하고 언제 생성되었는지 대략적으로 알고 있습니다. 현재 디렉터리와 하위 디렉터리에 있는 이 확장자를 가진 모든 파일과 해당 생성 날짜를 어떻게 나열할 수 있습니까? 저는 Mac OS X를 사용하고 있습니다.

답변1

이를 수행하는 쉬운 방법은 다음과 같습니다.다루기 힘든, macOS에 기본적으로 설치됩니다. 그것은글로벌 예선타임스탬프 및 기타 메타데이터를 기준으로 파일을 선택하고 정렬할 수 있습니다. zsh는 생성 시간을 지원하지 않지만 수정 시간과 inode 변경 시간은 지원합니다. 이들 중 하나는 생성 시간과 일치할 수 있습니다.

이는 현재 디렉터리와 해당 하위 디렉터리()에 있는 확장자를 가진 100개의 [1,100]최신 ( om) 일반( ) 파일을 나열합니다 ...nb**/

zsh -c 'ls -ltr **/*.nb(.om[1,100])'

여기에는 7~14일 전에 수정된 파일이 나열됩니다.

zsh -c 'ls -ltr **/*.nb(.m+6m-14)'

답변2

이것은 당신이 원하는 것을 달성해야합니다.

find . -type f -name '*.nb'|xargs stat -f '%c %N'|sort

설명하다

find . -type f -name '*.nb'.nb 확장자를 가진 모든 파일을 찾습니다.

xargs stat -f '%c %N'Unix 타임스탬프가 앞에 오는 파일을 인쇄합니다.

sort분류하세요.

답변3

Bash의 경우(Mac 아님):

find . -type f -iname '*.nb'| xargs -d '\n' stat -c '%z %N'|sort

현재 디렉터리와 다음 디렉터리에서 패턴과 일치하는 "file" 유형의 모든 항목을 찾습니다.

(-iname은 대소문자를 무시합니다)

xargs로 파이프

(-d '\n' 구분 기호를 줄 바꿈으로 변경하여 파일 이름에 공백을 허용합니다)

그럼 통계

(-c는 출력 형식 %z = 마지막 상태 변경 %N 인용된 파일 이름을 의미합니다)

그리고 출력을 정렬

답변4

find -name '*.nb' -exec ls -rtl {} +

이 패턴과 일치하는 모든 파일의 세부 정보가 표시되어 가장 오래된 것부터 최신 것 순으로 정렬됩니다( r명령에서 옵션을 제거하면 최신 것부터 오래된 것 순으로 정렬할 수 있습니다 ls).

마지막은 +일치하는 모든 항목에 대해 명령을 실행하는 대신 검색이 끝날 때 명령을 실행한다는 의미입니다.

노트: 이것은 합당한 수의 일치에 대해서만 작동합니다. 명령줄이 너무 길면 ls여러 개로 분할되어 ls여러 개의 하위 집합이 정렬되고 전체 목록이 올바르게 정렬되지 않습니다(이 점을 지적한 @Gilles 및 @rudimeier에게 감사드립니다) 밖으로) .

관련 정보