일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Disk Partition
- portable
- Programming
- MS windows
- script
- LiveCD(USB)
- MS Windows PE
- 대항해시대
- Command
- javascript
- calculator
- OS(operating system)
- network
- apm
- web
- explorer
- FTP
- PC
- UNIX
- Crack(Serial Key)
- Linux
- webhard
- H/W
- program
- Update
- SSH
- game
- Network Info(Tool)
- Windows 10
- Backup(Restore)
- Today
- Total
<In Story>
리눅스 File Size 체크 스크립트 // [Unix] [Linux] [Script] [Programming] [Command] 본문
리눅스 File Size 체크 스크립트 // [Unix] [Linux] [Script] [Programming] [Command]
<In Story, Hi story, History> 2015. 6. 6. 18:31http://ktdsoss.tistory.com/239
이전 글에 이어 특정 파일시스템에서 어떤 파일들이 용량을 많이 차지하고 있는지 확인하는 스크립트에 대해 글 올립니다.
먼저 스크립트 전문은 다음과 같습니다.
#!/bin/bash
SEARCH_PATH=${1} // 특정 용량 이상을 차지하는 file 들을 확인할 디렉토리명
MB_SIZE=${2} // 어느 정도 용량 이상의 file 들을 확인할 것인지 MB 단위로 지정
cd ${SEARCH_PATH}
### Check File Size more than ${MB_SIZE} MB
file_list=`find . -size +${MB_SIZE}M -type f -print` // ${MB_SIZE} MB 이상의 type 이 file인 것들을 ${SEARCH_PATH} 에서 find 하여 파일명만 file_list 변수에 저장
if [ $? -eq 0 ]; then // 위 명령이 정상 수행되었다면(return code: 0),
for file in ${file_list}; do // 파일 리스트들을 하나씩 받아서
ls -l ${file} // ls 명령으로 ownership, permission, file size 등을 확인
done
else
echo 'The running of shell command is failed!!' // find 명령이 정상 수행되지 않았다면, 에러 메시지를 뿌리고 스크립트 종료
exit
fi
위 스크립트 구문은 사실 find 의 옵션 하나만 알고 있다면 다음과 같이 줄일 수 있습니다.
#!/bin/bash
SEARCH_PATH=${1}
MB_SIZE=${2}
cd ${SEARCH_PATH}
### Check File Size more than ${MB_SIZE} MB
find . -size +${MB_SIZE}M -type f -exec ls -l {} \;
if [ $? -ne 0 ]; then
echo 'The running of shell command is failed!!' // find 명령이 정상 수행되지 않았다면, 에러 메시지를 뿌리고 스크립트 종료
exit
fi
전후 스크립트의 차이점이라면, find 명령에 exec 옵션을 사용하여 그 아래에 있던 if문과 for문을 없애버린 점인데요.
exec 옵션은 find 명령을 통해 찾은 결과값들을 대상으로 exec 옵션 뒤의 명령들을 수행하겠다는 옵션입니다.
위 예제에서는 ${MB_SIZE} MB 이상 되는 file 들을 찾아서 ls -l 명령을 수행하겠다는 뜻이 되겠죠.
exec 옵션 뒤의 {} 와 \; 의 의미는 다음과 같습니다.
{} : find 에서 찾아낸 검색 결과가 하나씩 들어가는 부분(for문과 같은 역할)
\; : -exec 옵션 다음에 나오는 명령어를 실행
위 주석을 참조하여 스크립트를 이해하시면 되겠고, 원본 스크립트는 파일로 첨부하였습니다.
감사합니다.