사이트 내 전체검색
PHP
shell script로 파일 싸이즈 통계내는 방법
로빈아빠
https://cmd.kr/php/284 URL이 복사되었습니다.

본문

#!/usr/bin/ksh


BEGINYEAR=`ls -alR| awk '{print $8}' | grep -v : | sort +0 | grep [0-9] | head -1` #파일중 가장 오래된 연도 추출
LASTYEAR=`date +"%Y"`      #현재 연도 추출
NEXTYEAR=0


count(){                   #count() 함수 선언, 사실 선언 할 필요는 없으나 결과를 파일로 받아내기 위해서 일부러 구성함. 하단의 전체사이즈를 위한 것임.
while (( $BEGINYEAR <= $LASTYEAR ))             # 시작년도에 1을 더해서 현재년도까지 도달하면 종료
do
touch -t ${BEGINYEAR}01010000 $BEGINYEAR        # 파일의 연도는 6개월 이상이 되어야만 년도 표시가 되며 그렇지 않은경우 시간으로 표시됨.
NEXTYEAR=`expr $BEGINYEAR + 1`                  # 이런 문제를 해결하기 위해서 touch -t로 매년 1월 1일 0시에 생성되는 파일을 만들고
touch -t ${NEXTYEAR}01010000 $NEXTYEAR          # 다음년도 1월 1일 0시에 생성되는 파일을 만들어서


find . -newer ${BEGINYEAR} ! -newer ${NEXTYEAR} -ls > findresult.txt   #find 상에서 -newer 옵션을 이용하여 파일 결과를 저장.


echo "${BEGINYEAR}'s Total Size : \\c"          # 년도 출력후


awk 'BEGIN{sum1=0}                              # find로 추출한 파일에서 해당년도의 파일 사이즈 합계 계산
          {sum1+=$7}
       END{printf "%13s\n",sum1}' findresult.txt


/usr/bin/rm ${BEGINYEAR}                        #생성된 임의 파일 삭제
/usr/bin/rm ${NEXTYEAR}


BEGINYEAR=$NEXTYEAR                             #시작년도에 1을 더해서 다음년도로 이동


done
}


count > result.txt                             #count()를 호출해서, 결과 값은 result.txt에 저장


cat result.txt                                 #화면에 매년도별 SIZE 합계를 뿌려주고
echo "================================================"


awk -F: 'BEGIN{sum1=0}                         # 전제 SIZE에 대한 결과도 함께 뿌려줍니다.
              {sum1+=$2}
         END{printf "Total SIZE        : %13s\n",sum1}' result.txt


/usr/bin/rm result.txt                         # 생성된 불필요한 파일 삭제


exit                                           # 종료


 


# 파일 size가 많은 경우는 %13s를 보다 큰 수로 변경하면 됩니다.

댓글목록

등록된 댓글이 없습니다.

PHP
871 (14/18P)

Search

Copyright © Cmd 명령어 18.118.144.199