adsense_in_article_test


[bash: find, awk] 특정 디렉토리에 있는 특정 파일들의 용량 합계 구하기 리눅스 bash script

특정 디렉토리 안에 있는 일부 파일들이 차지하고 있는 공간을 계산하기 위한 방법이다. 예를 들어 ~/documents 디렉토리에서 pdf 파일이 용량 합계가 얼마인지 구하는 것. (특정 디렉토리의 디스크 사용량을 알려주는 du 명령 보다  좀 더 세밀한 작업을 필요로 할 때 요긴하다.)

우선 아래의 예시를 보자.

# ~/documents 디렉토리에서 pdf 파일을 찾아 파일 정보 표시
find ~/documents -type f -name "*.pdf" -ls
 
~/documents 디렉토리와 그 하위 디렉토리에 대해서 파일(-type f)을 찾되 이름이 .pdf로 끝나는 것(-name "*.pdf")만 고른다. 그리고 이 파일들에 대한 정보를 표시(-ls)한다. -ls 옵션을 사용하면 ls -l 명령으로 출력한 것과 유사한 결과를 볼 수 있다. 하위 디렉토리를 검색 대상에서 제외하거나 범위를 지정하려면 -maxdepth 옵션을 추가하면 되겠다.

# pdf 파일 찾기. 하위 디렉토리 제외
find ~/documents -maxdepth 1 -type f -name "*.pdf" -ls

위의 find 명령에 대한 결과값을 보면 파일 용량 정보가 통상 7번째 항목일 것이다. 이제 awk 명령을 이용해서 이 항목을 다 더하면 용량 합계를 구할 수 있다.

# ~/documents 디렉토리의 pdf 파일 용량 합계 구하기
find ~/documents -maxdepth 1 -type f -name "*.pdf" -ls | awk '{ result += $7 } END { print result }'

awk 명령을 이용해서 find 명령의 결과중 7번째 항목($7)을 누적해서 result라는 변수에 저장하고(result += $7) 이 작업을 마친 후에(END) result 변수값을 출력(print result)하면 된다.

파이프(|)와 grep 명령을 조합해서 계산할 수도 있다. 아래의 예시를 보자.

# ~/documents 디렉토리의 pdf 파일을 찾아 파일 정보 표시
find ~/documents -type f | grep "\.pdf$" | xargs ls -l

위의 예시에서 ls -l 명령의 다섯번째 항목($5)에 파일 용량이 나타난다는 점을 이용해서 아래와 같이 계산한다.

# ~/documents 디렉토리의 pdf 파일을 찾아 용량 합계 계산
find ~/documents -type f | grep "\.pdf$" | xargs ls -l | awk '{ result += $5 } END { print result }'



핑백

  • 반달가면 : [bash: awk] 작업 시작전, 완료후에 실행할 명령어 지정(BEGIN/END) 2016-11-18 23:58:34 #

    ... _file.txt 굳이 이러한 구문이 필요할까 싶을 수도 있겠지만 의외로 요긴하다. 특정 디렉토리에서 특정 파일의 용량 합계를 awk를 이용해서 계산하는 방법을 다룬 이전 게시물을 보면 END 구문이 마지막 결과 출력에 활용되고 있음을 볼 수 있다. awk 활용에 대한 다른 게시물들은 여기로 ... more

덧글

  • 마틴폴 2020/06/03 18:26 # 삭제 답글

    감사합니다.
  • 반달가면 2020/06/03 20:59 #

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



통계 위젯 (화이트)

22207
3300
2298700

2019 대표이글루_IT

B-Side