bash script2023. 4. 11. 11:38

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

 

728x90
Posted by 반달가면