[linux] Bash에서 각 파일 및 디렉토리의 크기를 나열하고 내림차순으로 정렬하는 방법은 무엇입니까?

Bash에서 디렉토리 크기를 쉽게 얻을 수 없다는 것을 알았습니다.

를 입력 ls -<some options>하면 디렉토리의 파일 크기와 파일의 모든 합계를 동시에 나열하고 크기 순서로 정렬 할 수 있기를 바랍니다.

가능합니까?



답변

디렉토리로 이동하여 다음 명령을 실행하십시오.

du -a --max-depth=1 | sort -n

또는 사람이 읽을 수있는 크기의 경우 -h를 추가하고 더 큰 디렉토리 / 파일을 먼저 인쇄하려면 -r을 추가하십시오.

du -a -h --max-depth=1 | sort -hr


답변

분명히 --max-depth옵션은 Mac OS X 버전의 du명령 이 아닙니다 . 대신 다음을 사용할 수 있습니다.

du -h -d 1 | sort -n


답변

du -s -- * | sort -n

(숨겨진 (.dotfiles) 파일은 표시되지 않음)

du -smMb 단위 등에 사용 합니다. 항상 사용합니다.

du -smc -- * | sort -n

-c분명한 이유로 전체 줄 ( )이 맨 아래에 있기 때문입니다. 🙂

추신:

  • dotfile 처리에 대한 주석보기
  • 나는 자주 예를 들어 ‘du -smc / home / / | sort -n | tail ‘을 사용하여 큰 비트가 정확히 어디에 있는지 알 수 있습니다.

답변

명령

du -h --max-depth=0 * | sort -hr

산출

3,5M    asdf.6000.gz
3,4M    asdf.4000.gz
3,2M    asdf.2000.gz
2,5M    xyz.PT.gz
136K    xyz.6000.gz
116K    xyz.6000p.gz
88K test.4000.gz
76K test.4000p.gz
44K test.2000.gz
8,0K    desc.common.tcl
8,0K    wer.2000p.gz
8,0K    wer.2000.gz
4,0K    ttree.3

설명

  • du “디스크 사용량”을 표시합니다.
  • h “사람이 읽을 수있는”(정렬 및 뒤 둘 다)
  • max-depth=0du하위 폴더의 크기를 표시하지 않음을 의미합니다 (모든 하위, 하위 하위, …, 폴더에있는 모든 파일의 모든 크기를 표시하려면 제거)
  • r “reverse”(가장 큰 파일 먼저)

ncdu

이 질문에 대해 파일 시스템을 정리하고 싶었습니다. 명령 줄 도구 ncdu가이 작업에 더 적합합니다.

Ubuntu에 설치 :

$ sudo apt-get install ncdu

용법:

ncdu [path]명령 줄을 입력하기 만하면 됩니다. 경로를 분석하는 데 몇 초 후에 다음과 같은 내용이 표시됩니다.

$ ncdu 1.11 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------
.  96,1 GiB [##########] /home
.  17,7 GiB [#         ] /usr
.   4,5 GiB [          ] /var
    1,1 GiB [          ] /lib
  732,1 MiB [          ] /opt
. 275,6 MiB [          ] /boot
  198,0 MiB [          ] /storage
. 153,5 MiB [          ] /run
.  16,6 MiB [          ] /etc
   13,5 MiB [          ] /bin
   11,3 MiB [          ] /sbin
.   8,8 MiB [          ] /tmp
.   2,2 MiB [          ] /dev
!  16,0 KiB [          ] /lost+found
    8,0 KiB [          ] /media
    8,0 KiB [          ] /snap
    4,0 KiB [          ] /lib64
e   4,0 KiB [          ] /srv
!   4,0 KiB [          ] /root
e   4,0 KiB [          ] /mnt
e   4,0 KiB [          ] /cdrom
.   0,0   B [          ] /proc
.   0,0   B [          ] /sys
@   0,0   B [          ]  initrd.img.old
@   0,0   B [          ]  initrd.img
@   0,0   B [          ]  vmlinuz.old
@   0,0   B [          ]  vmlinuz

로 현재 강조 표시된 요소를 삭제하고 +로 d종료합니다.CTRLc


답변

ls -S크기별로 정렬합니다. 그런 다음 크기도 표시하기 위해 크기 ls -lS( -l)별로 정렬 된 긴 ( -S) 표시를 제공합니다. 나는 일반적으로 -h내용을 더 쉽게 읽을 수 있도록 추가 하기 때문에 ls -lhS.


답변

간단하고 빠름 :

find . -mindepth 1 -maxdepth 1 -type d | parallel du -s | sort -n

* GNU Parallel이 필요합니다 .


답변

당신이 뭘하고 싶은지 알아 낸 것 같아요. 이것은 모든 파일과 모든 디렉토리의 정렬 된 목록을 제공하며, 파일 크기와 디렉토리 내용의 크기별로 정렬됩니다.

(find . -depth 1 -type f -exec ls -s {} \;; find . -depth 1 -type d -exec du -s {} \;) | sort -n