CentOS와 RHEL에서 find가 다른 순서로 표시되는 이유는 무엇입니까?

CentOS와 RHEL에서 find가 다른 순서로 표시되는 이유는 무엇입니까?

저는 RHEL7을 실행하는 머신과 CentOS-7.5를 실행하는 머신 두 대를 가지고 있습니다.

find --version보고서당 버전 4.5.11.

각 디렉토리에 다음과 같은 디렉토리 구조를 만들었습니다.

./dir/some-file
./.hidden/dir/some-file

RHEL7 시스템에서 이것을 실행 하면 find -name some-file위와 일치하는 출력을 얻습니다.

그러나 CentOS-7.5 시스템에서 find를 실행하면 결과 목록이 반대 순서로 나타납니다.

왜 이런거야?

답변1

검색 경로의 디렉터리 구조를 탐색하는 순서는 find다음과 같습니다.라이브러리 readdir()기능디렉토리 항목을 반환합니다. 이러한 항목은 더 이상 순서가 지정되지 않으므로 find파일 시스템 구현에 따라 디렉터리 항목이 파일 시스템에서 생성되는 순서 또는 동일한 파티션의 다른 파일 및 디렉터리가 생성 및 삭제되는 순서에 따라 달라질 수 있습니다. .

의 출력에서도 동일한 순서를 얻게 됩니다 ls -f.

답변2

매뉴얼 페이지에 따르면디렉토리 읽기()

readdir()에 대한 연속 호출로 파일 이름을 읽는 순서는 파일 시스템 구현에 따라 달라지며 어떤 방식으로든 이름이 정렬될 가능성은 없습니다.

이는 실제로 응답을 받는 순서가 파일 시스템에 따라 달라지며 어떤 순서도 기대할 수 없음을 의미합니다. 항목이 디렉토리 구조에 저장되는 순서를 알 수 있으며 디스크 배치 방식으로 인해 순서는 한 시스템에서 다음 시스템까지 동일하지 않습니다.

관련 정보