$ ls -l
drwsrwsrwt 2 caine caine 4096 2017-01-10 13:21 10050
-rw-r--r-- 10 caine caine 4096 2017-01-19 11:29 10051
drwxr-xr-x 20 caine 18 8096 2017-01-19 11:29 10052
drwxr-xr-x 21 11 caine 4096 2017-01-19 11:29 10053
drwxr-xr-x 22 caine 22 4096 2017-01-19 11:29 10054
-rw-r--r-- 14 caine caine 50 2017-01-19 11:29 10055
위의 내용을 바탕으로 어떤 파일 크기가 가장 큰지 어떻게 알 수 있나요? 대답은 10051이라고 들었는데 왜 그런지 모르겠습니다. 위의 정보만을 토대로 어떤 파일이 가장 큰지 알아내는 데 사용할 수 있는 구체적인 방법이 있습니까?
답변1
ls -l
출력 7 열: 유형 및 권한, 링크 수, 소유자, 그룹, 크기, 수정 시간 및 이름. (이 내용은 정보 페이지의 GNU ls에 대해 문서화되어 있습니다. 이를 확인 info ls
하고 메뉴에서 "What information is listed(어떤 정보가 나열되어 있는지)"를 선택한 다음 아래로 스크롤하여 로 이동하세요 -l
. 아니면 info ls 'long ls format'
직접 해당 페이지로 이동해야 합니다.)
따라서 첫 번째 열(유형 및 권한)을 보면 첫 번째 문자는 유형, 즉 디렉터리 유형 d
과 -
일반 파일을 알려줍니다. 따라서 10051과 10055라는 두 개의 파일만 있습니다. 그런 다음 다섯 번째 열(크기)을 보면 하나는 4096바이트이고 다른 하나는 50바이트입니다. 어느 것이 더 큰지 분명합니다.
물론 이러한 모든 디렉터리에는 꽤 많은 파일이 포함될 수 있으며 이러한 파일의 전체 크기는 더 클 수 있습니다. ls
디렉토리 자체의 크기를 표시합니다(생각해 보면 "디렉토리의 내용"은 데이터이므로 어딘가에 저장해야 하지만 Unix에서는이름파일 수는 내용이 아닌 디렉토리의 일부로 저장됩니다. 즉, 디렉토리 자체(10052)가 더 큽니다.
포함된 파일과 하위 디렉터리를 포함하여 디렉터리의 크기를 (반복적으로) 알고 싶다면 du
이 명령을 사용할 수 있습니다 .
답변2
# /bin/ls -1sSr | tail -1
크기에 따라 목록을 정렬한 다음 목록 끝에 가장 큰 항목만 표시합니다.
답변3
Linux를 언급하셨으므로 GNU Coreutils 버전의 ls
.
우리가 아는 한 info ls
, ls -l
출력은
"...파일 유형, 파일 모드 비트, 하드 링크 수, 소유자 이름, 그룹 이름, 크기 및 타임스탬프(*파일 타임스탬프 형식 참고::), 일반적으로 수정 시간.
따라서 다섯 번째 열을 살펴보면 파일 크기입니다. 물론 ls -l
with awk
나 다른 도구의 출력을 구문 분석할 수 있지만 1)ls를 구문 분석하는 것은 나쁜 생각입니다.및 2)GNU ls에는 장치를 나타내는 파일 크기가 없습니다..
따라서 나는 대안을 추천합니다:
$ find -maxdepth 1 -type f -exec du -b {} \; | sort -k1,1 -n | tail -n 1
그러면 파일이 필터링되고 du
각 파일에 대해 실행되며 출력이 숫자로 정렬됩니다. 마지막 줄이 가장 큰 파일입니다.
답변4
du
다음 명령을 사용할 수 있습니다 .
du -a $PWD | sort -n -r
첫 번째 출력은 작업 디렉터리입니다.