ksh 에서 3 개 월 떨 어 진 파일 이동 스 크 립 트
3 개 월 동안 의 파일 을/app/tmp 에 남 겨 두 어야 조회 하기 편리 합 니 다.
3 개 월 이상 의 두 가지 파일 은 생 성 날짜 에 따라 다른 디 렉 터 리 로 이동 합 니 다. 예 를 들 어/app/tmp/2011/03 은 2011 년 3 월 의 모든 파일 을 표시 합 니 다.
마지막 으로 이 스 크 립 트 는 crontab 에 넣 고 매일 실 행 됩 니 다.매일 파일 을/app/tmp/nnnn/nn 안 으로 옮 기 는 것 입 니 다./app/tmp 아래 는 가장 가 까 운 3 개 월 이내 의 파일 입 니 다.
(이 스 크 립 트 는/app/test 로 변경 되 어 테스트 전에 환경 에 직접 사용 되 는 것 을 방지 합 니 다)
bug 가 있 을 수 있 습 니 다. 쓴 논리 도 가장 정교 하 지 는 않 지만 ksh 의 특징 을 조금 배 운 셈 입 니 다.ksh 의 산수 연산 과 사용자 정의 함수 에 대해 가장 간단 한 예 가 있 습 니 다.
- #!/bin/ksh
-
- function month_to_num {
- typeset month=$1
- case $month in
- "Jan") print 1;;
- "Feb") print 2;;
- "Mar") print 3;;
- "Apr") print 4;;
- "May") print 5;;
- "Jun") print 6;;
- "Jul") print 7;;
- "Aug") print 8;;
- "Sep") print 9;;
- "Oct") print 10;;
- "Nov") print 11;;
- "Dec") print 12;;
- esac
- }
-
-
- file_dir="/app/test"
- flag=0
- oldest_file_name=`ls -lt $file_dir| grep -E "txt|xml" | tail -1 | awk '{print $9}'`
- oldest_file_month_tmp=$(istat $file_dir/$oldest_file_name | grep modified | awk '{print $4}')
- oldest_file_month="`month_to_num "$oldest_file_month_tmp"`"
- oldest_file_day=`istat $file_dir/$oldest_file_name | grep modified | awk '{print $5}'`
- oldest_file_year=`istat $file_dir/$oldest_file_name | grep modified | awk '{print $NF}'`
- now_month=`date +\%m`
- now_day=`date +\%d`
- now_year=`date +\%Y`
- (( duration= (( now_year - oldest_file_year )) * 12 + now_month - oldest_file_month ))
- echo $duration
- while [[ $flag -ge 0 ]]
- do
- flag=-1
- while [[ $duration -gt 3 || $duration -eq 3 && $now_day -eq $oldest_file_day ]]
- do
- flag=0
- if [ -d $file_dir/$oldest_file_year/$oldest_file_month/ ]
- then
- mv $file_dir/$oldest_file_name $file_dir/$oldest_file_year/$oldest_file_month/
- else
- mkdir -p $file_dir/$oldest_file_year/$oldest_file_month
- mv $file_dir/$oldest_file_name $file_dir/$oldest_file_year/$oldest_file_month/
- fi
- oldest_file_name=`ls -lt $file_dir| grep -E "txt|xml" | tail -1 | awk '{print $9}'`
- oldest_file_month_tmp=$(istat $file_dir/$oldest_file_name | grep modified | awk '{print $4}')
- oldest_file_month="`month_to_num "$oldest_file_month_tmp"`"
- oldest_file_day=`istat $file_dir/$oldest_file_name | grep modified | awk '{print $5}'`
- oldest_file_year=`istat $file_dir/$oldest_file_name | grep modified | awk '{print $NF}'`
- (( duration= (( now_year-oldest_file_year )) * 12 + now_month - oldest_file_month ))
- done
- done
다음 과 같이 요약 한다.
1. ksh 의 산수 연산 은 비교적 특징 이 있어 야 한다.
2. $() 와 반 쉼표 '' 는 차이 가 많 지 않 은 작용 일 것 이다.
3. 가장 간단 한 사용자 정의 함수 의 쓰기 와 호출.
초등학생 수준의 대본... 잘 부탁드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.