각 파일 및 디렉토리의 크기를 나열하고 Bash에서 내림차순으로 정렬하려면 어떻게 해야 합니까?
Bash에서는 디렉토리 크기를 쉽게 구할 수 없다는 것을 알았습니다.
는 그걸 입력했을 때 요.ls -<some options>
디렉토리 파일사이즈의 모든 합계를 재귀적으로 리스트 할 수 있습니다.또, 파일도 사이즈순으로 정렬할 수 있습니다.
그게 가능한가요?
디렉토리로 이동하여 다음 명령을 실행합니다.
du -a --max-depth=1 | sort -n
또는 사람이 읽을 수 있는 크기의 경우 -h를 추가하고 큰 디렉토리/파일을 먼저 인쇄하려면 -r을 추가합니다.
du -a -h --max-depth=1 | sort -hr
★★★★★★★★★★★★★★.--max-depth
X 버전의 X에는 옵션이 .du
명령어를 입력합니다.대신 다음을 사용할 수 있습니다.
du -h -d 1 | sort -n
du -s -- * | sort -n
(숨김(.dotfiles) 파일은 표시되지 않습니다.)
du -sm
(Mb 단위 등)나는 항상 사용한다
du -smc -- * | sort -n
총 회선(-c
는 명백한 로 맨 .
PS:
- 닷 파일 처리에 대한 설명 참조
- 예를 들어 '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
"이 읽을 수 있는" (가지 위한 이다.인간이 읽을 수 있는 것"을 위한 것이다(현물과 du 모두).max-depth=0
「」를 의미합니다.du
서브폴더의 사이즈는 표시되지 않습니다(모든 서브, 서브, 서브, ..., 폴더의 모든 파일의 모든 사이즈를 표시하는 경우는, 삭제해 주세요).r
( first "first" (file first) " (first)
ncdu
이 질문을 받았을 때, 저는 제 파일 시스템을 정리하고 싶었습니다. 도구 " " "ncdu
이 작업에 훨씬 더 적합합니다.
Ubuntu에서의 설치:
$ sudo apt-get install ncdu
사용방법:
냥냥 just just just just라고 치면 돼요.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
에서 현재 강조 표시된 요소를 삭제하고 + 를 눌러 종료합니다.
ls -S
하기 위해 크기를 표시해야 합니다.ls -lS
하다-l
)에 따라 -S
를 표시합니다).가 표시됩니다.는 보통 는는보보보보보보추추 i i를 붙입니다.-h
쉽게 하기 , '읽기 쉽게', '읽기 쉽게', '읽기 쉽게', '읽기 쉽게', '읽기 쉽게'ls -lhS
.
심플하고 고속:
find . -mindepth 1 -maxdepth 1 -type d | parallel du -s | sort -n
네가 뭘 하고 싶은지 알 것 같아그러면 모든 파일과 디렉토리의 파일 크기 및 내용 크기별로 정렬된 목록이 표시됩니다.
(find . -depth 1 -type f -exec ls -s {} \;; find . -depth 1 -type d -exec du -s {} \;) | sort -n
[어디서나]
이것은 아래 초기 버전보다 훨씬 빠르고 정확하며 현재 디렉토리의 모든 파일 크기를 합한 합계를 출력합니다.
echo `find . -type f -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$//g'` | bc
stat -c %s
파일의 명령어는 파일 크기를 바이트 단위로 반환합니다.tr
는, 「」를 극복하기 합니다.xargs
제한(「」(「」)에의)xargs
결과를 더 많은 행으로 분할하여 명령의 논리를 깨는 것입니다). 때문에, 「 」는 할 수 없습니다.tr
는, 를 「Line Feed」로 을 실시하고 있습니다.+
(웃음) ★★★★★★★★★★★★☆sed
에는 마지막을 .+
하지 않도록 합니다.bc
(기본 계산기) 명령을 사용하여 평소처럼 계산을 수행합니다.
퍼포먼스:몇 개의 디렉토리와 최대 150,000개 이상의 파일(현재 페도라 15박스의 파일 수)을 테스트했습니다.놀라운 결과라고 생각합니다.
# time echo `find / -type f -exec stat -c %s {} \; | tr '\n' '+' | sed 's/+$//g'` | bc
12671767700
real 2m19.164s
user 0m2.039s
sys 0m14.850s
하고 du -sb /
는 디스크 바이트 합니다(바이트 단위).-b
□□□□□□□□★
# du -sb /
12684646920 /
.du
유틸리티는 실제 사용된 공간이 아니라 각 파일에 할당된 공간을 반환합니다.
[초기판]
하면 안 요.du
인용에 ) (man)의 정확한 를 알 경우 du
에 파일 영역의 사용 상황을 나타냅니다.따라서 잘못된 결과, 근사치(합계에 가까울 수 있지만 찾는 실제 크기보다 클 수 있음)가 나타납니다.
당신의 질문에 대답할 수 있는 다른 방법이 있을 것 같지만, 이것은 제 것입니다.
ls -l $(find . -type f | xargs) | cut -d" " -f5 | xargs | sed 's/\ /+/g'| bc
의 모든 로 변경)이 를 사용).디렉토리의 모든 파일(원하는 디렉토리를 사용하여 .를 변경), 숨김 파일도 포함되어 있습니다.xargs
후, using using using using using using using using using using using using using using using using using using using 를 사용하여 상세 목록을 작성합니다.ls -l
이 ( 명령어와 필드(. " (. ") "cut " 5" "cut" )에만-f5
단위)가 (바이트 단위)에 파이핑됩니다xargs
빈칸으로 구분된 한 줄의 크기를 다시 생성합니다. 각 을 플러스하는 sed 하세요.+
에 서명하고 으로 )을 클릭합니다.bc
을 사용하다
좀 더 할 수도 있고, '조율'이 있을 수도 있어요.또한ls
인수 목록에 대해 불만을 제기하는 명령이 너무 깁니다.
또 하나의 심플한 솔루션.
$ for entry in $(ls); do du -s "$entry"; done | sort -n
그 결과는 다음과 같이 보일 것입니다.
2900 tmp
6781 boot
8428 bin
24932 lib64
34436 sbin
90084 var
106676 etc
125216 lib
3313136 usr
4828700 opt
"du -s"를 "du -sh"로 변경하면 사람이 읽을 수 있는 크기가 표시되지만 이 방법으로는 정렬할 수 없습니다.
아래를 사용하여 파일을 크기 du -h | sort -hr | more 또는 du -h --max-depth=0 * | sort -hr | more 순으로 나열할 수 있습니다.
나는 du를 간단한 방법으로 사용하는 경향이 있다.
du -sh */ | sort -n
이것에 의해, 어느 디렉토리가 공간을 가장 많이 소비하고 있는지를 알 수 있습니다.그러면 나중에 더 정확한 검색을 실행할 수 있습니다.
sudo
du -hsx 2>/dev/null * | sort -hr | less
4.9G var
2.2G usr
61M root
9.0M etc
6.5M home
824K init
36K run
16K lost+found
4.0K tmp
4.0K srv
4.0K opt
4.0K mnt
4.0K media
4.0K boot
0 sys
0 sbin
0 proc
0 libx32
0 lib64
0 lib32
0 lib
0 dev
0 bin
(END)
언급URL : https://stackoverflow.com/questions/7463554/how-to-list-the-size-of-each-file-and-directory-and-sort-by-descending-size-in-b
'source' 카테고리의 다른 글
목록 또는 태플에서 항목을 명시적으로 선택 (0) | 2023.04.16 |
---|---|
ListBox 항목을 두 번 클릭하여 브라우저를 엽니다. (0) | 2023.04.11 |
Swift에서 UIImageView 개체에 대한 작업을 할당하는 방법 (0) | 2023.04.11 |
Git은 BLOB에서의 SHA-1 충돌에 어떻게 대처합니까? (0) | 2023.04.11 |
NAMED 콘텐츠를 사용하여 WPF UserControl을 작성하는 방법 (0) | 2023.04.11 |