find
Cygwin이나 Linux와 Solaris에서 다르게 동작하는 이유가 궁금합니다 .
이라는 이름의 파일이 포함된 여러 개의 디렉토리가 있습니다 CS##########
. 각각은 #
숫자이지만 CS 뒤에는 항상 10자리 숫자가 옵니다.
Cygwin에서 사용될 때 find
목록은 CS000000001
다음과 같이 정렬됩니다 CS00002345
. Solaris에서 사용되는 경우 find
목록은 완전히 순서가 지정되지 않습니다.
이것이 실제로 OS와 관련된 것인지, 아니면 find 구현으로 인한 것인지 궁금합니다.
답변1
find
출력을 정렬하지 않습니다. 파일 이름의 순서는 파일 시스템에 디렉토리 항목이 나타나는 순서에 따라 달라집니다. Solaris에서든 Windows에서든 이를 제어할 수 없습니다.
일부 파일 시스템에서는 디렉토리를 생성하고 여기에 파일을 추가하면 파일이 추가된 순서대로 나타납니다. 이것이 아마도 Windows에서 정렬되는 이유일 것입니다. 그러나 이것이 모든 경우에 해당되는 것은 아니며(예를 들어 Solaris의 zfs에서는 그렇지 않다고 생각합니다), 디렉토리에서 파일을 삭제하고 다른 파일을 추가하기 시작하면 대부분의 파일 시스템의 순서를 예측할 수 없습니다.
일부 파일 시스템에는 예측 가능성이 있지만 대부분은 그렇지 않습니다. Mac OS/OSX용 HFS+ 및 Linux용 Reiserfs는 파일 이름을 바이트 사전 순서로 정렬합니다(프로세스의 로케일 순서가 다를 수 있음). Linux의 ext2/ext3/ext4는 정렬되지 않습니다. 이것은 당신이 믿을 수 있는 것이 아닙니다.
에서 정렬된 출력이 필요한 경우 find
로 파이프하십시오 sort
.