디렉토리 트리에서 최신 500개 파일을 찾는 명령이며 POSIX와 호환됩니다.

디렉토리 트리에서 최신 500개 파일을 찾는 명령이며 POSIX와 호환됩니다.

디렉토리에서 최신 500개 파일을 찾기 위해 한 줄의 쉘 스크립트나 유닉스 명령을 찾고 있습니다. 주요 제한 사항은 POSIX와 호환되어야 하며 디렉터리에 많은 수의 파일이 포함될 수 있다는 것입니다.

답변1

최신 500개 파일이 무엇인지 확인하려면 디렉터리의 모든 파일을 계산해야 한다고 확신합니다.

ls -t| head -n 500

답변2

디렉터리와 모든 하위 디렉터리에 있는 파일을 참조하는 경우(예:

find . -exec sh -c \
    $'echo "$(stat -c "%Y" "$0")\t$0"' {} \; | \
    sort -k1nr | cut -f 2 | head -n 500

그러면 문제가 해결될 것입니다.

그것을 파괴:

  • find . -exec현재 디렉터리의 각 파일에 대해 명령 실행
  • sh -c "command" {}command표시된 각 파일에 대해 실행 find하고 $0파일 이름으로 설정
  • stat -c "+%Y" "$0"지정된 파일의 수정 시간을 인쇄합니다."$0"
  • sort -k1nr번호 역순으로 첫 번째 필드를 기준으로 정렬
  • cut -f 2수정 시간 필드를 제거하고 파일 이름만 남깁니다.
  • head -n 500처음 500줄까지 인쇄

$'...'이는 and( 즉, TAB)가 필드 구분 기호로 사용되기 때문입니다 .\tsortcut\t

POSIX를 준수하려면 다음을 대체할 수 있습니다.

$'...\t...'

그리고

"...<press Ctrl-V, Tab>..."

불행히도 stat휴대용이 아닙니다. Linux에서 사용되지만 stat -c "%Y"FreeBSD 및 Mac OS에서도 사용됩니다 stat -f "%m".

이식 가능한 접근 방식을 정말로 원한다면 Python, Perl 또는 Ruby를 사용하는 것이 더 쉽습니다.

관련 정보