`find`가 역순으로 파일을 찾도록하려면 어떻게해야합니까?


17

하위 디렉토리에서 타임 스탬프 (생성)별로 정렬 된 파일을 찾고 싶습니다.

맨 페이지를 보았지만 타임 스탬프로 정렬하는 것이 아니라 타임 스탬프로만 필터링 할 수있는 것처럼 보입니다.

이를 위해 어떤 옵션을 전달할 수 find있습니까? 또는 sort타임 스탬프별로 정렬하는 것과 같이 다른 도구와 어떻게 결합 할 수 있습니까?


1
find깊이 우선 검색과 너비 우선 검색 중 하나를 선택하는 것 외에는 특정 정렬 순서로 아무것도 수행 할 수 없습니다 .
Jonathan Leffler 2016 년

@ merlin2011, 여기에서 선택한 답변을 검토하십시오. 현재 선택된 답변은 find단일 인스턴스에 전달할 수있는 것보다 많은 파일이 발견되면 버그입니다 (실제로 올바르게 정렬되지 않은 출력을 생성 함) ls.
Charles Duffy

@CharlesDuffy, 메모 주셔서 감사합니다! 허용 된 답변을 업데이트했습니다.
merlin2011

답변:


32

Paul의 솔루션은 일반적으로 괜찮지 만 단순히 다음보다 많은 I / O가 필요합니다.

find bin/ -type f -printf '%Ts\t%p\n' | sort -nr | cut -f2

find수백만 개의 파일을 반환 하면 어떻게 됩니까? 그것들을 모두 하나의 긴 목록으로 정렬하지 않습니까? 여전히 효율적입니까? (각 디렉토리를 독립적으로 정렬하는 대신)
Peter Mortensen

1
줄 바꿈과 같은 파일 이름의 재미있는 문자로는 작동하지 않습니다
Boris Brodski

2
이것은 user7385의 답변에 대한 의견 만받을 가치가 있지만 그렇게 할 평판은 없습니다. find bin/ -type f -printf '%Ts\t%p\0' | sort -nrz | cut -f2 -z | xargs -0 ls새 버전 cut에는 -z 옵션이 있으므로 줄 바꿈이있는 파일 이름이 작동합니다.
MattBlissett

I / O의 양이이 답변을 선호하는 주된 이유는 아닙니다. 정확성 은 훨씬 더 중요한 차이입니다. 두 번 이상 시작해야하는 xargs -0 ls -t파일이 너무 많으면 이 방법이 제대로 작동하지 않지만이 방법은 계속 작동합니다. xargsls
Charles Duffy

@PeterMortensen, "모두 하나의 매우 긴 목록으로 정렬"은 실제로 올바른 결과를 반환하는 유일한 방법입니다. 또한, 기타 / 허용 대답은 하지 않습니다 "종류의 각 디렉토리 독립적으로"중 (하나는 재귀없이 종류의 단 하나의 디렉토리를 원하는 경우, 하나는 사용할 수있는 -maxdepth 1find).
Charles Duffy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.