디렉터리나 하위 디렉터리 중 하나에 있는 파일 이름을 잊어버렸습니다. 파일 확장자(.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에게 감사드립니다) 밖으로) .