옵션 목록에서 어떤 Linux 파일이 가장 큰지 확인하는 방법은 무엇입니까?

옵션 목록에서 어떤 Linux 파일이 가장 큰지 확인하는 방법은 무엇입니까?
$ 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

첫 번째 출력은 작업 디렉터리입니다.

관련 정보