수백만 개의 파일이 있는 디렉토리: 파일을 나열하는 메모리 효율적인 방법(linux/ext4)

수백만 개의 파일이 있는 디렉토리: 파일을 나열하는 메모리 효율적인 방법(linux/ext4)

불행하게도 수백만 개의 파일을 하나의 단일 디렉터리(하위 디렉터리 없이)에 저장하는 응용 프로그램이 있습니다.

주어진 디렉토리에서 ls 또는 find를 수행하면 ls 또는 find는 서버 기가바이트의 RAM을 소비합니다.

그 이유는 ls와 find가 한 디렉토리의 모든 파일을 RAM으로 읽기 때문인 것 같습니다.

내 질문은 다음과 같습니다.

많은 메모리를 소비하지 않고 이 디렉토리의 파일을 나열할 수 있는 방법이 있습니까?

모든 솔루션(특수 옵션/다른 명령/컴파일할 C 프로그램/특수 Python 모듈)이 흥미로울 것입니다.

답변1

다음이 있습니다:

ls명령은 파일 이름뿐만 아니라 fstat()모든 파일을 읽습니다. 시퀀스 를 사용하면 opendir() / readdir() / close()훨씬 더 나은 결과를 얻을 수 있습니다.

XFS그 외에도 디렉터리를 나열하는 데 필요한 리소스도 파일 시스템의 기능입니다. ext4.

관련 정보