드라이브에서 가장 큰 파일을 보여주는 일련의 명령을 찾고 있습니다.
드라이브에서 가장 큰 파일을 보여주는 일련의 명령을 찾고 있습니다.
답변:
큰 파일 만 찾으면 옵션 find
과 함께 사용할 수 있습니다 -size
. 다음 명령은 10MiB보다 큰 모든 파일을 나열합니다 ( 10MB와 혼동하지 마십시오 ).
find / -size +10M -ls
특정 크기 사이의 파일을 찾으려면 "크기보다 작음"검색과 결합 할 수 있습니다. 다음 명령은 10MiB와 12MiB 사이의 파일을 찾습니다.
find / -size +10M -size -12M -ls
apt-cache search 'disk usage'
디스크 사용량 분석에 사용할 수있는 일부 프로그램을 나열합니다. 매우 유망한 것으로 보이는 하나의 응용 프로그램입니다 gt5
.
패키지 설명에서 :
몇 년이 지났고 디스크가 점점 더 커졌지 만,이 엄청나게 큰 하드 디스크 시대에도 공간은 시간이 지남에 따라 사라지는 것 같습니다. 이 작고 효과적인 프로그램은 기본 du (1)보다 편리한 목록을 제공합니다. 마지막 실행 이후 발생한 상황을 표시하고 dir 크기 및 총 백분율을 표시합니다. 텍스트 기반 브라우저 (링크, elink, lynx 등)와 함께 커서 키를 사용하여 디렉토리를 탐색하고 승격 할 수 있습니다.
의 "관련 패키지"섹션에 GT5 , 내가 발견 ncdu
. 패키지 설명에서 :
Ncdu는 ncurses 기반 du 뷰어입니다. 유명한 du 유틸리티를 통해 빠르고 사용하기 쉬운 인터페이스를 제공합니다. 디렉토리를 탐색하고 ncurses 라이브러리를 사용하여 디스크 사용량의 백분율을 표시 할 수 있습니다.
-ls
은 하드 코드됩니다 (소스 코드 pred_fls
및 list_file 함수 참조). -printf
옵션을 사용하여 출력을 근사 하거나 awk로 출력을 후 처리하거나 다음과 같은 것을 사용할 수 있습니다.find ... -type f -exec ls -ldh {} \; | column -t
나는 단지 du
와 의 조합을 사용합니다 sort
.
sudo du -sx /* 2>/dev/null | sort -n
0 /cdrom
0 /initrd.img
0 /lib64
0 /proc
0 /sys
0 /vmlinuz
4 /lost+found
4 /mnt
4 /nonexistent
4 /selinux
8 /export
36 /media
56 /scratchbox
200 /srv
804 /dev
4884 /root
8052 /bin
8600 /tmp
9136 /sbin
11888 /lib32
23100 /etc
66480 /boot
501072 /web
514516 /lib
984492 /opt
3503984 /var
7956192 /usr
74235656 /home
그런 다음 헹구고 반복하십시오 . 너무 큰 것으로 생각되는 서브 디렉토리를 대상으로 지정하고 명령을 실행하여 문제점의 원인을 찾으십시오.
참고 : 나는 하나의 파일 시스템으로 제한하기 위해 du
의 -x
플래그를 사용합니다 (SSD와 RAID5 사이에 교차 마운트 된 것들을 상당히 복잡하게 배열했습니다).
참고 2 : 2>/dev/null
오류 메시지를 망각으로 리디렉션합니다. 그들이 당신을 귀찮게하지 않으면, 그것은 의무가 아닙니다.
du
매뉴얼 페이지 "재귀 적 디렉토리에 각 파일의 디스크 사용량을 요약합니다."
내가 가장 좋아하는 솔루션은 이러한 좋은 답변 중 몇 가지를 혼합하여 사용합니다.
du -aBM 2>/dev/null | sort -nr | head -n 50 | more
du
인수 :
-a
"모든"파일 및 디렉토리. 디렉토리 만 남겨 두십시오.-BM
메가 바이트 (M) 블록 크기 (B)로 크기를 출력2>/dev/null
- "권한이 거부되었습니다"오류 메시지 제외 (@Oli 덕분에)sort
인수 :
-n
"숫자"-r
"반전"(가장 큰 것부터 작은 것까지)head
인수 :
-n 50
상위 50 개 결과에 대해서만more
더 작은 숫자를 사용하는 경우 떠나십시오참고 : 접두어는 sudo
계정에 액세스 권한이없는 디렉토리를 포함합니다.
/ var에서 상위 10 개의 가장 큰 파일 및 디렉토리를 표시하는 예 (총계 포함).
cd /var
sudo du -aBM 2>/dev/null | sort -nr | head -n 10
7555M .
6794M ./lib
5902M ./lib/mysql
3987M ./lib/mysql/my_database_dir
1825M ./lib/mysql/my_database_dir/a_big_table.ibd
997M ./lib/mysql/my_database_dir/another_big_table.ibd
657M ./log
629M ./log/apache2
587M ./log/apache2/ssl_access.log
273M ./cache
현재 폴더에서 가장 큰 최상위 20 개 디렉토리를 (재귀 적으로) 표시하려면 다음 한 줄짜리를 사용하십시오.
du -ah . | sort -rh | head -20
또는 (보다 유닉스 지향) :
du -a . | sort -rn | head -20
현재 디렉토리에서 상위 20 개 파일의 경우 (재귀 적으로) :
ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20
또는 사람이 읽을 수있는 크기로 :
ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20
그주의 사항
-h
GNU 사용할 수 있습니다sort
그래서 당신은에서를 설치했습니다, 제대로 OSX / BSD에서 작동하도록 만coreutils
. 그런 다음 폴더를에 추가하십시오PATH
.
따라서 이러한 별칭은 rc 파일에 필요할 때마다 (필요할 때마다) 유용합니다 .
alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
이것은 다음에 대한 완벽한 응용 프로그램처럼 보입니다 find
.
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
이 명령은 디렉토리에서 모든 파일을 찾아서 $DIRECTORY
실행 ls -s
합니다. 마지막 명령은 파일의 할당 된 크기와 파일 이름을 인쇄합니다. 결과는 숫자로 정렬되고 마지막 5 개의 항목이 표시됩니다. 결과적으로 가장 큰 5 개 파일 $DIRETORY
또는 하위 디렉토리가 표시됩니다. 입력 tail -n 1
하면 가장 큰 파일 만 표시됩니다.
또한 당신은로 많이 놀 수 있습니다 find
. 예를 들어 n 일 미만 ( -ctime -n
)이거나 특수 사용자 ( -user johndoe
)에 속하는 파일을 찾을 수 있습니다 .
Baobab을 사용해보십시오. 파일과 폴더에 대한 그래픽 개요를 제공합니다. 실제 공간 호그의 위치를 확인하고 한 번의 클릭으로 삭제할 수 있습니다 https://help.ubuntu.com/community/Baobab
명령을 사용하여 디렉토리를 건너 뛰면서 가장 큰 파일을 볼 수 있습니다.
sudo find / -type f -printf “%s\t%p\n” | sort -n | tail -1
find $HOME -type f -printf ‘%s %p\n’ | sort -nr | head -10
100MiB보다 큰 모든 파일을 찾으려면 100MB가 아닙니다 . 혼란 스러우면 여기를 참조 하십시오 .
find / -size +100M -ls
아래 명령은 폴더에서 가장 큰 5 개의 파일을 표시합니다 $DIRECTORY
.
find $DIRECTORY -type f -exec ls -s {} \; | sort -n | tail -n 5
사용 du
: 뒤를 사용하는 아래의 명령을 홈 작업 폴더에있는 20 개 가장 큰 크기의 디렉토리를 표시합니다
sudo du -a /home | sort -n -r | head -n 20
이제 하위 폴더를 포함하여 가장 큰 디렉토리 / 파일을 표시하려면 다음을 실행하십시오.
du -Sh | sort -rh | head -n 10
사용 ls
:
/ bin 디렉토리에서 가장 큰 5 개의 파일을 나열하려면 아래 명령을 실행하십시오.
ls -lSh /bin | head -5