[완료] [질문] 쉘스크립트 / 하나의 폴더에 저장되어 있는 로그를 년/월 구분하여 옮기고 싶습니다.

자일자일의 이미지

안녕하세요.

쉘 스크립트를 작성하다.. 잘 되지 않아 도움 요청드립니다.
사용환경은 Solais, chs를 사용합니다.

만들고자 하는 스크립트는 아래와 같은 형식으로(마지막 8자리가 날짜)

./syslog.20080820
./syslog.20080923
./messages.20080413
./syslog.20080413
./messages.20080820
./syslog.20080922

저장되어 있는 파일들을 다음과 같은 경로에 일괄적으로 옮기고 싶습니다.

./2008/200801
./2008/200802
./2008/200803
./2008/200804
./2008/200805

해서... 생각한 구현 방법이

1. 로그가 저장된 디렉토리에서 find 명령어로 마지막 8자리가 파일을 검색한다.

# find . -name "*.200?????"
./messages.20080505
./syslog.20080505

2. 검색된 파일에서 날짜 부분을 추출한다.

# find . -name "*.200?????" | awk -F. '{print $3}' | cut -c 1-42004
2008
2008
2008
2008
2008
2008

3. 여기서부터 어떻게 처리해야 할 지 모르겠습니다.
년도와 월을 변수처리해서 파일 이동을 시켜야 되는데 위와 같은 방법으로는 불가능 한것 같아요.

좋은 방법이 있으면 도움 부탁드려요.
감사합니다.

aero의 이미지

perl -e 'foreach(<*.200?????>){($dir1,$dir2)=$_=~/(200\d)(\d\d)/; mkdir $dir1; mkdir "$dir1/$dir1$dir2"; system("cp $_ ./$dir1/$dir1$dir2") }'

자일자일의 이미지

깔끔하게 옮겨지네요.

감사합니다.