adsense_in_article_test


[bash: sort, awk] 대용량 파일/디렉토리 찾기 리눅스 bash script

특정 디렉토리에서 용량을 가장 많이 차지하고 있는 파일을 찾아야 할 때가 있다. 일일이 용량을 눈으로 확인해도 되지만 파일 수가 아주 많을 때는 좀 더 우아한(?) 방법을 찾아야 한다.

우선 정렬을 위한 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: sort] 특정 항목(field)을 기준으로 정렬하기 2015-02-10 22:52:29 #

    ... 항목을 문자열이 아니라 수자로 간주하기 위해 -g 옵션을, 정렬 순서를 바꾸기 위해 -r 옵션을 추가했다. (-g, -r 옵션에 대한 내용은 이전 게시물을 참고하자. 여기로) 항목 구분자(field separator)가 문자일 경우엔 어떻게 할까? 아래의 예시를 보자. cat my_list2.txt strawberry:46 mang ... more

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.



통계 위젯 (화이트)

169516
2895
2275627

2019 대표이글루_IT

B-Side