반달가면 이글루에서 백업 - http://bahndal.egloos.com/540410
특정 디렉토리 안에 있는 일부 파일들이 차지하고 있는 공간을 계산하기 위한 방법이다. 예를 들어 ~/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 script' 카테고리의 다른 글
[bash: date] 두 날짜 사이의 시간차 구하기 (0) | 2023.04.11 |
---|---|
[bash: for, sed, echo] txt 파일에서 여러줄로 된 항목을 한줄로 바꾸기 (0) | 2023.04.11 |
[bash: <<. >] FTP 자동접속 및 전송 결과 확인 (0) | 2023.04.11 |
[bash: sort] 특정 항목(field)을 기준으로 정렬하기 (0) | 2023.04.07 |
[bash: function] 함수를 이용한 동시 작업(백그라운드 실행) (0) | 2023.04.07 |