ls
Unix에서 하위 디렉토리의 전체 크기와 모든 내용을 나열하는 것이 가능 4K
합니까 ( 일반적으로 디렉토리 파일 자체라고 가정)?
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
매뉴얼 페이지를 수색 한 후 비어 있습니다.
답변
다음과 같은 것을 시도하십시오 :
du -sh *
짧은 버전 :
du --summarize --human-readable *
설명:
du
: D ISK U 세이지
-s
: 지정된 각 파일에 대한 요약을 표시합니다. (에 해당 -d 0
)
-h
: “인간이 읽을 수있는”출력. 이용 유닛 접미사 : B의 YTE, K의 ibibyte (킬로바이트), M의 ebibyte MIB (), G의 ibibyte (GIB), T의 ebibyte (TiB 크기) 및 P의 ebibyte (PIB). (BASE2)
답변
du -sk * | sort -n
폴더를 크기별로 정렬합니다. 공간을 정리할 때 도움이됩니다 ..
답변
du -sh * | sort -h
이것은 사람이 읽을 수있는 형식으로 표시됩니다.
답변
사람이 읽을 수있는 형식으로 현재 디렉토리에서 가장 큰 디렉토리를 나열하려면 다음을 수행하십시오.
du -sh * | sort -hr
행 수를 제한하는 더 좋은 방법은 다음과 같습니다.
du -sh * | sort -hr | head -n10
-n
나열된 행 수를 제한하기 위해 플래그 접미 부를 늘릴 수있는 위치
견본:
[~]$ du -sh * | sort -hr
48M app
11M lib
6.7M Vendor
1.1M composer.phar
488K phpcs.phar
488K phpcbf.phar
72K doc
16K nbproject
8.0K composer.lock
4.0K README.md
읽기가 더 편리합니다. 🙂
답변
ls -lh
형식으로 표시하려면 다음을 사용하십시오.
(du -sh ./*; ls -lh --color=no) | awk '{ if($1 == "total") {X = 1} else if (!X) {SIZES[$2] = $1} else { sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); print $0} }'
Awk 코드 설명 :
if($1 == "total") { // Set X when start of ls is detected
X = 1
} else if (!X) { // Until X is set, collect the sizes from `du`
SIZES[$2] = $1
} else {
// Replace the size on current current line (with alignment)
sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0);
print $0
}
샘플 출력 :
drwxr-xr-x 2 root root 4.0K Feb 12 16:43 cgi-bin
drwxrws--- 6 root www 20M Feb 18 11:07 document_root
drwxr-xr-x 3 root root 1.3M Feb 18 00:18 icons
drwxrwsr-x 2 localusr www 8.0K Dec 27 01:23 passwd
답변
원하는 명령은 ‘du -sk’du = “디스크 사용량”입니다.
-k 플래그는 du 기본 디스크 섹터 (512 바이트 블록) 대신 킬로바이트 단위로 출력합니다.
-s 플래그는 최상위 디렉토리 (즉, 기본적으로 현재 디렉토리 또는 명령 행에 지정된 디렉토리)의 항목 만 나열합니다. du가 이와 관련하여 ls의 반대 행동을 갖는 것은 이상합니다. 기본적으로 du는 각 하위 디렉토리의 디스크 사용량을 재귀 적으로 제공합니다. 반대로 ls는 지정된 디렉토리의 목록 파일 만 제공합니다. (ls -R은 재귀 동작을 제공합니다.)
답변
이 쉘 함수 선언을 쉘 초기화 스크립트에 넣으십시오.
function duls {
paste <( du -hs -- "$@" | cut -f1 ) <( ls -ld -- "$@" )
}
나는 그것을 전화 duls
는 모두의 출력을 보여주기 때문에 du
하고 ls
(순서대로) :
$ duls
210M drwxr-xr-x 21 kk staff 714 Jun 15 09:32 .
$ duls *
36K -rw-r--r-- 1 kk staff 35147 Jun 9 16:03 COPYING
8.0K -rw-r--r-- 1 kk staff 6962 Jun 9 16:03 INSTALL
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
4.0K -rw-r--r-- 1 kk staff 1689 Jun 9 16:03 README
120K -rw-r--r-- 1 kk staff 121585 Jun 10 13:26 aclocal.m4
684K drwxr-xr-x 7 kk staff 238 Jun 10 13:26 autom4te.cache
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
60K -rw-r--r-- 1 kk staff 60083 Jun 10 13:26 config.log
36K -rwxr-xr-x 1 kk staff 34716 Jun 10 13:26 config.status
264K -rwxr-xr-x 1 kk staff 266637 Jun 10 13:26 configure
8.0K -rw-r--r-- 1 kk staff 4280 Jun 10 13:25 configure.ac
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
2.3M drwxr-xr-x 28 kk staff 952 Jun 10 13:26 examples
6.2M -rw-r--r-- 1 kk staff 6505797 Jun 15 09:32 mrbayes-3.2.7-dev.tar.gz
11M drwxr-xr-x 42 kk staff 1428 Jun 10 13:26 src
$ duls doc
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
$ duls [bM]*
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
설명:
paste
유틸리티는 당신이 그것을 제공하는 사양에 따라 입력에서 열을 만듭니다. 두 개의 입력 파일이 주어지면 탭을 구분 기호로 사용하여 파일을 나란히 놓습니다.
우리는 그것의 출력을 줄 du -hs -- "$@" | cut -f1
첫 번째 파일 (정말 입력 스트림)과의 출력으로 ls -ld -- "$@"
두 번째 파일로 저장됩니다.
이 함수에서 "$@"
모든 명령 행 인수 목록을 각각 큰 따옴표로 묶어 평가합니다. 따라서 공백 등으로 글러브 문자 및 경로 이름을 이해할 수 있습니다.
이중 빼기 ( --
)는 명령 행 옵션의 끝을 du
및으로 신호합니다 ls
. 이러한없이 말을 duls -l
혼동 할 du
과에 대한 모든 옵션 du
이 ls
혼동 것없는 ls
(두 유틸리티에 존재하며 옵션은 동일한 것을 의미하지 않을 수 있습니다, 그것은 꽤 엉망이 될 것입니다).
는 cut
이후 du
단순히의 첫 번째 열에 잘라내 du -hs
출력 (크기)를.
나는 du
출력을 왼쪽에 두기로 결정했다 .
명령은 명령 행 플래그를 승인하지 않습니다.
이것은 모두에서 테스트되었습니다 bash
와에 ksh93
. 작동하지 않습니다 /bin/sh
.
