저는 요즘 몇 가지 기본적인 UNIX 명령을 배우고 있습니다. 오늘은 ls
. 결과를 크기별로 정렬하고 싶습니다.
시도해 보았는데
ls -lS /Applications/Utilities
결과가 정렬되지 않았습니다.시도해 보았는데
ls -lS ~/Downloads
결과가 정리되었습니다.
이유를 아시나요? 특정 폴더에 대한 결과를 정렬할 수 없는 이유는 무엇입니까?
답변1
/Applications/Utilities
macOS 냄새가 납니다. macOS의 IIRC 디렉터리에는 일반적으로 일반 파일이 아닌 디렉터리가 포함됩니다.
디렉토리는 불투명한 형식의 파일 이름 목록을 포함하는 특수한 유형의 파일입니다. 디렉터리 파일의 크기는 일반적으로 그 안에 있는 파일 수에 따라 커지지만 항상 그런 것은 아닙니다. 예를 들어 macOS 파일 시스템에 대해서는 모르지만 다른 많은 파일 시스템에서는 삭제 시(해당 파일이 디렉터리에서 연결 해제될 때) 디렉터리 항목이 차지하는 공간이 회수되지 않는 경우가 많습니다.
디렉터리 파일은 블록 단위로 할당되는 경우도 많습니다. 나는 이 모든 디렉토리가 매우 적은 수의 항목을 포함하므로 단 하나의 블록(아마도 4KiB 정도)만 포함하므로 크기가 동일한 것으로 의심합니다. 이는 ls
이름별로 정렬되는 이유를 설명합니다(관계를 해결하는 방법으로).
전체적으로 디렉토리의 크기는 실제로 관련이 없습니다.
디렉터리에 있는 모든 파일의 누적 디스크 사용량을 기준으로 디렉터리 목록을 (재귀적으로) 정렬하려면 다음을 수행할 수 있습니다.
du -ks /Application/Utilities/* | sort -n
(이 디렉터리 이름에 개행 문자가 포함되어 있지 않다고 가정합니다.)