bash script2021. 9. 24. 16:50

 

반달가면 이글루에서 백업 - 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

 

 

728x90
Posted by 반달가면