반달가면 이글루에서 백업 - http://bahndal.egloos.com/524038
특정 디렉토리에서 용량을 가장 많이 차지하고 있는 파일을 찾아야 할 때가 있다. 일일이 용량을 눈으로 확인해도 되지만 파일 수가 아주 많을 때는 좀 더 우아한(?) 방법을 찾아야 한다.
우선 정렬을 위한 sort 명령을 생각해 보자.
# 8 에서 11까지 출력하고 정렬
seq 8 11 | sort
10
11
8
9
seq 명령을 이용해서 8에서 11까지 출력한 후 이것을 sort 명령으로 정렬하면 출력한 수자를 문자로 간주하고 정렬하므로 위의 예시와 같은 결과가 나온다. 수자를 수자로 인식하기 위해서는 -g 옵션을 사용하면 된다.
seq 8 11 | sort -g
8
9
10
11
자, 이제 가장 큰 수부터 출력하도록 정렬 순서를 반대로 한다. -r 옵션을 사용하자.
seq 8 11 | sort -g -r
11
10
9
8
큰 파일들을 찾기 위한 준비가 끝났다. ls -l 명령으로 디렉토리에 있는 파일명과 크기를 같이 출력한 후에 awk 명령으로 파일 크기와 파일명만 골라내고, 이 결과값을 sort 명령으로 정렬한다.
# ~/my_dir 디렉토리의 파일 용량 TOP10 출력
ls -l ~/my_dir | grep "^\-" | awk '{print $5 "\t" $9}' | sort -g -r | head -10
ls -l 명령의 출력에서 디렉토리나 심볼릭 링크를 제외하고 파일만 골라내기 위해 '-' 부호로 시작하는 행만 선별하고(grep 명령)
파일 용량(5번째 항목)과 파일명(9번째 항목)만 골라서 탭(tab)을 구분자로 해서 출력한 후(awk 명령)
가장 용량이 큰 항목부터 출력하도록 정렬(sort 명령), 여기서 맨 처음 10개 행만 표시(head 명령)
용량을 많이 차지하고 있는 디렉토리를 찾고 싶다면 du 명령 이용하면 된다. 아래의 예시를 보자.
# ~/my_dir 디렉토리 하위에 있는 디렉토리 용량 TOP10 출력
du ~/my_dir | sort -g -r | head -10
'bash script' 카테고리의 다른 글
[bash: if] if 조건문에서 대괄호([ ]) 사용 (0) | 2022.08.05 |
---|---|
[bash: find] find 명령에서 하위 디렉토리 범위를 지정해서 검색하기 (0) | 2021.09.24 |
[bash: top, awk] CPU 또는 메모리 점유가 높은 프로세스 찾기 (0) | 2021.08.10 |
[bash: sort, awk] 중복되는 행 제거하기 (0) | 2021.07.20 |
[bash: head] 여러개의 파일 내용을 출력하면서 파일명 함께 출력하기 (0) | 2021.07.13 |