[완료]awk에서 DATE=$(date +%m%d)변수가 에러납니다.

ahsan의 이미지

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로 하면 된다고 하는데 이런 경우 어떻게 사용하는지도 궁금합니다.

monpetit의 이미지

환경변수 DATE를 사용하는 것은 ENVIRON["DATE"]가 옳은 문법입니다.
자세한 것은 man page를 보세요.

-----
익명으로 쓴 글은 볼 수 없습니다.

ahsan의 이미지

그렇게 써면 되긴 하는데 날짜 폴더가 만들어지는 것이 아니라
그냥 ENVIRON["DATE"]라는 파일이 만들어집니다.

modestcode의 이미지

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 는 필요없는데요, 혹시 안 넘어 오는데 이렇게 해서 넘어오면 쓰세요.

monpetit의 이미지

전 잘 되는데요. 이상하네요.

find /wav/global -mtime +7 | awk '{ print "mv " $1 " /atlanta/global/" ENVIRON["DATE"]}' | sh 

이렇게 안 하셨나요?
물론 위의 명령어 전에 mkdir로 디렉토리를 먼저 만드셔야겠죠.

-----
익명으로 쓴 글은 볼 수 없습니다.

jg의 이미지

awk 로는 -v 옵션을 주시는 게 편할 것 같습니다.

우선 +7로 하시겠다는 말씀은 지금 시점에서 7일 이전에 생성된 파일은 모조리
옮기시겠다는 것 맞지요?
아마 이번 한 번만 find 로 찾으시고 다음부턴 주기적으로 모조리 복사하실 계획인가요?

매번 mv 하는 것은 좀 느리기 때문에 아래와 같은 코드를 추천합니다.
파일 이름에 공백이 있는 파일이나 괄호 등이 섞여 있는 파일도 잘 되겠금 짜봤습니다.

find -mtime +7 | awk -v destdir=$(date +%m%d) '
{
    if ( $0 == "." || $0 == ".." ) next
    cnt++; gsub("'\''", "'\''\\'\'\''");
    if ( ( cnt % 10000 ) == 0 ) {
        printf " '\'%s\''\n", destdir
    } else {
        if ( (cnt % 10000 ) == 1 ) {
            printf "mv"
        }
        printf " '\'%s\''", $0
    }
}        
END {
    if ( ( cnt % 10000 ) != 0 ) {
        printf " '\'%s\''\n", destdir
    }
}' | sh

흠.. 그런데 뭔가 더 간단한 방법이 있을 것 같군요 ^^;
다른 고수님이 알려주시겠죠 =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}

ahsan의 이미지

그런데 제가 Shell Script를 못하는 초보자라
위의 선생님께서 올리신 코드가 무슨 뜻인지 통 모르겠습니다.
부디 한줄 한줄 까막눈을 위해 주석을 부탁드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.