개발관련/other

하위 디렉토리 및 시간이있는 디렉토리에서 최근 수정 된 파일을 재귀 적으로 찾고 나열하는 방법

Rateye 2021. 11. 18. 10:11
728x90
반응형
질문 : 하위 디렉토리 및 시간이있는 디렉토리에서 최근 수정 된 파일을 재귀 적으로 찾고 나열하는 방법

  • 운영 체제 : Linux
  • 파일 시스템 유형 : ext3
  • 선호하는 솔루션 : Bash (스크립트 / 한 줄짜리), Ruby 또는 Python

 

 

여러 하위 디렉토리와 파일이있는 여러 디렉토리가 있습니다. 모든 첫 번째 수준 디렉터리가 그 안에 최근 생성 / 수정 된 파일의 날짜와 시간 옆에 나열되는 방식으로 구성된 이러한 모든 디렉터리의 목록을 만들어야합니다.

명확히하기 위해 파일을 터치하거나 하위 디렉터리 수준 아래로 내용을 수정하면 첫 번째 수준 디렉터리 이름 옆에 해당 타임 스탬프가 표시되어야합니다. 다음과 같은 구조의 디렉토리가 있다고 가정합니다.

./alfa/beta/gamma/example.txt

example.txt 파일의 내용을 수정합니다 alfa 옆에 epoch가 아닌 사람이 읽을 수있는 형식으로 표시된 시간이 필요합니다. xargs , sort 등을 사용하여 몇 가지 시도했지만 파일을 몇 수준 아래로 생성 / 수정할 때 'alfa'의 파일 시스템 타임 스탬프가 변경되지 않는다는 문제를 해결할 수 없습니다.

답변

이걸로 해봐:

#!/bin/bash
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head

재귀 적으로 스캔을 시작해야하는 디렉토리 경로로 실행합니다 (공백이있는 파일 이름 지원).

파일이 많으면 반환하는 데 시간이 걸릴 수 있습니다. xargs 대신 사용하면 성능이 향상 될 수 있습니다.

#!/bin/bash
find $1 -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

조금 더 빠릅니다.

출처 : https://stackoverflow.com/questions/5566310/how-to-recursively-find-and-list-the-latest-modified-files-in-a-directory-with-s
728x90
반응형