[완료]awk에서 DATE=$(date +%m%d)변수가 에러납니다.
글쓴이: ahsan / 작성시간: 금, 2007/08/31 - 11:28오후
mount -t nfs 192.168.2.134:/var/spool/bamboo/wav /wav/global
DATE=$(date +%m%d)
mkdir /atlanta/global/$DATE
find /wav/global -mtime +7 | awk '{ print "mv "$1" /atlanta/global/$DATE" }' | sh
umount /wav/global
현재 기계1(192.168.2.130)에서 기계2(192.168.2.134)를 마운트시켜서
생성된지 7일이 지난 파일을 move시킬려고 하는데 문제는 awk를 사용하니
$DATE변수로 생성된 폴더에 move가 안되고 에러가 나네요.
어떻하면 좋을까요?
파일수가 대량일 경우 rsync로 하면 된다고 하는데 이런 경우 어떻게 사용하는지도 궁금합니다.
Forums:
잘못된 문법입니다.
환경변수 DATE를 사용하는 것은 ENVIRON["DATE"]가 옳은 문법입니다.
자세한 것은 man page를 보세요.
-----
익명으로 쓴 글은 볼 수 없습니다.
-----
http://monpetit.posterous.com/
http://monpetit.tistory.com/
안돼요.
그렇게 써면 되긴 하는데 날짜 폴더가 만들어지는 것이 아니라
그냥 ENVIRON["DATE"]라는 파일이 만들어집니다.
mount -t nfs
mount -t nfs 192.168.2.134:/var/spool/bamboo/wav /wav/global
DATE=$(date +%m%d)
mkdir /atlanta/global/$DATE
export DATE=$DATE
find /wav/global -mtime +7 | awk '{ print "mv "$1" /atlanta/global/'"$DATE"'" }' | sh
umount /wav/global
과 같은 방법도 있습니다.
이로써 환경변수를 넘기는 제가 아는 3가지 방법이 다 언급된 것 같네요.
수정:
export DATE=$DATE 는 필요없는데요, 혹시 안 넘어 오는데 이렇게 해서 넘어오면 쓰세요.
전 잘 되는데요.
전 잘 되는데요. 이상하네요.
이렇게 안 하셨나요?
물론 위의 명령어 전에 mkdir로 디렉토리를 먼저 만드셔야겠죠.
-----
익명으로 쓴 글은 볼 수 없습니다.
-----
http://monpetit.posterous.com/
http://monpetit.tistory.com/
awk 로는 -v 옵션을
awk 로는 -v 옵션을 주시는 게 편할 것 같습니다.
우선 +7로 하시겠다는 말씀은 지금 시점에서 7일 이전에 생성된 파일은 모조리
옮기시겠다는 것 맞지요?
아마 이번 한 번만 find 로 찾으시고 다음부턴 주기적으로 모조리 복사하실 계획인가요?
매번 mv 하는 것은 좀 느리기 때문에 아래와 같은 코드를 추천합니다.
파일 이름에 공백이 있는 파일이나 괄호 등이 섞여 있는 파일도 잘 되겠금 짜봤습니다.
흠.. 그런데 뭔가 더 간단한 방법이 있을 것 같군요 ^^;
다른 고수님이 알려주시겠죠 =3 ==3 ===3
==
윽, 버그가 있어서 수정했습니다. 역시 다른 방법을 강구하는 것이 좋을 것 같군요.
==
쉘 이스케이핑이 좀 난해하군요.. 다시 고쳤습니다. orz
--
perl -e's@@JEON Myoung-jin@;sub man{s| _|her e|}
sub see{s;^;Just;;u;s;e ;Perl ;;to;print$_,$/}$uperMan=M;
s=^....=U are not=;s~$uperMan~~;&admitIt;s=U are = A=;s|young|_|;&man;
sub admitIt{say;ye;s!-\w+! Hacker!};see U'
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
너무나 감사합니다.
그런데 제가 Shell Script를 못하는 초보자라
위의 선생님께서 올리신 코드가 무슨 뜻인지 통 모르겠습니다.
부디 한줄 한줄 까막눈을 위해 주석을 부탁드립니다.
댓글 달기