Language 2006. 11. 7. 18:30

디쎄형이 만들어 달라고 했던 삽질 스크립트다..
이거 사실 코드 공개하기가 졸라 쪽팔릴정도로;; 삽질코드다 ㅠ_ㅠ

원하는 작업은 Year/Month/*.bin을 옮기는것이었는데, 조건이 경로를 살려야 된다.
샘플은 아래와 같다.

원본 디렉토리 내용:
/mnt/SAT_ORG_2/NOAATDF/Y1999/M05/foobar_01.bin
/mnt/SAT_ORG_2/NOAATDF/Y1999/M05/foobar_02.bin
/mnt/SAT_ORG_2/NOAATDF/Y1999/M05/foobar_01.txt
/mnt/SAT_ORG_2/NOAATDF/Y1999/M05/foobar_02.txt
/mnt/SAT_ORG_2/NOAATDF/Y1999/M06/foobar_03.bin
/mnt/SAT_ORG_2/NOAATDF/Y1999/M06/foobar_04.bin
/mnt/SAT_ORG_2/NOAATDF/Y1999/M06/foobar_03.txt
/mnt/SAT_ORG_2/NOAATDF/Y1999/M06/foobar_04.txt
/mnt/SAT_ORG_2/NOAATDF/Y2000/M05/foobar_01.bin
/mnt/SAT_ORG_2/NOAATDF/Y2000/M05/foobar_02.bin
/mnt/SAT_ORG_2/NOAATDF/Y2000/M05/foobar_01.txt
/mnt/SAT_ORG_2/NOAATDF/Y2000/M05/foobar_02.txt
/mnt/SAT_ORG_2/NOAATDF/Y2000/M06/foobar_03.bin
/mnt/SAT_ORG_2/NOAATDF/Y2000/M06/foobar_04.bin
/mnt/SAT_ORG_2/NOAATDF/Y2000/M06/foobar_03.txt
/mnt/SAT_ORG_2/NOAATDF/Y2000/M06/foobar_04.txt

이동 디렉토리 경로:
/mnt/SAT_ORG_3/NOAA/BIN/

처음엔 간단히 생각해서 처리하려고 했는데 이게 생각보다 삽질을 만들어 냈다.
순간적으로 생각난게 list를 뽑아서 걸러낸뒤에 그대로 복사시키면 된다고 생각을 했는데
생각해보니 경로를 그대로 살려야 한다는 조건이 붙어 있어서 awk를 쓰게 됐다.
완성된 코드는 아래와 같다.

#!/bin/sh

find /mnt/SAT_ORG_2/NOAATDF/ -type d -name '*.bin' > list.txt

cat list.txt | while read file
do
year=`echo $file | awk -F / '{print $5}'`
month=`echo $file | awk -F / '{print $6}'`
mkdir -p /mnt/SAT_ORG_3/NOAA/BIN/$year/$month
cp -pR $file /mnt/SAT_ORG_3/NOAA/BIN/$year/$month/
done

rm -f list.txt

posted by 티니
: