디렉토리 아래의 모든 파일을 재귀 적으로 나열하고 수정 시간별로 출력을 정렬하려면 어떻게합니까?
나는 일반적으로 사용 ls -lhtc
하지만 모든 파일을 재귀 적으로 찾지는 않습니다. Linux와 Mac을 사용하고 있습니다.
ls -l
Mac OS X에서는
-rw-r--r-- 1 fsr user 1928 Mar 1 2011 foo.c
-rwx------ 1 fsr user 3509 Feb 25 14:34 bar.c
날짜 부분이 일치하지 않거나 정렬되지 않은 경우 솔루션에서이를 고려해야합니다.
부분 솔루션
stat -f "%m%t%Sm %N" ./* | sort -rn | head -3 | cut -f2-
작동하지만 재귀 적으로는 아닙니다.
답변
stat
@ johnshen64가 제안한대로 사용하는 방법은 다음과 같습니다.
find . -type f -exec stat -f "%m%t%Sm %N" '{}' \; | sort -rn | head -20 | cut -f2-
답변
사용 find
의 -printf
와 종류의 합리적인 날짜 형식에 :
find -type f -printf '%T+\t%p\n' | sort -n
이는 프로세스 포크를 최소화하여 가장 빠릅니다.
소수 부분이 마음에 들지 않는 경우의 예 (파일 시스템에서 종종 구현되지 않는 경우) :
find -type f -printf '%T+\t%p\n' | sed 's/\.[[:digit:]]\{10\}//' | sort -n
find -type f -printf '%T+\t%p\n' | cut --complement -c 20-30 | sort -n
편집 :find
Mac의 표준 에는 없습니다 -printf
. 그러나 Mac에서 GNU find 를 설치하는 것은 어렵지 않습니다 (Mac / Linux 호환성 및에 관한 추가 경고는 해당 링크 참조 xargs
).
답변
find .
모든 파일을 얻을 수 있어야합니다. 이 같은:
find . -exec ls -dl '{}' \; | sort -k 6,7
필요에 따라 조정해야합니다.
답변
zsh를 사용하고 있었기 때문에 Unix Stack Exchange 사이트에서 비슷한 질문에 대한이 답변이 도움이되었습니다.