쉼표로 구분된 디렉터리에 대한 디렉터리 목록 [닫기]

쉼표로 구분된 디렉터리에 대한 디렉터리 목록 [닫기]

scp안녕하세요, 한 환경에서 다른 환경으로 디렉토리를 복사 하려고 합니다 . 디렉토리가 다음 \과 같이 위치한다고 가정합니다. dir1 dir2 dir3이제 scp사본으로 이를 열로 나열해야 합니다 {'dir1','dir2',...}. 따옴표( '')는 생성할 수 있지만 쉼표( ,)는 생성할 수 없습니다. 쉼표 만드는 것을 도와주실 수 있나요? 현재는 생산만 할 수 있습니다 {'dir1' 'dir2'...}. 쉼표를 생성할 수 없습니다. 이 문제를 해결하는 데 도움을 주세요.

scp -rp hdqamktg@hdstg-c01-edge-03:/hdfs/app/qa/MarketingIT/warehouse/mktg_bdo.db/mktg_contact_roles_comp /hdfs/app/dev/MarketingIt/warehouse/hddvmktg/mktg_bdo.db/

(/hdfs/app/qa/MarketingIT/warehouse/mktg_bdo.db/mktg_contact_roles_comp 아래의 디렉터리는 viewdate=2015-01-02 viewdate=2015-01-02 viewdate=2015-01-03 등입니다.)

다음과 같이 작동합니다: scp -rp $sourceUser@$sourceHost:$srcDir$pathSeperator{'dir1','dir2'} $targetPath$pathSeperator

스크립트에서 얻은 출력은 다음과 같습니다. "mktg_mbd.web_data_uri_sessionized" 테이블에 대한 데이터 파일 복사 중... {'viewdate=2016-04-02' 'viewdate=2016-04-03}

성공적으로 복사하려면 {'viewdate=2016-04-02','viewdate=2016-04-03}이어야 합니다.

대상 디렉토리에는 viewdate=2016-03-01 viewdate=2016-03-05 viewdate=2016-03-09 viewdate=2016-03-13 viewdate=2016-03-17 등이 있습니다.

END_DATE_COMP=$(date -d $END_DATE +%s)
                            NEXT_DATE=$ST_DATE;
                            NEXT_DATE_COMP=$(date -d $NEXT_DATE +%s)
                            DATE_LIST='{'
                            while [ $NEXT_DATE_COMP -le $END_DATE_COMP ]
                            do
                                      DATE_LIST=$DATE_LIST"'viewdate="$NEXT_DATE"'"
                                    NEXT_DATE=`date +%Y-%m-%d -d "$NEXT_DATE + 1 day"`
                                    NEXT_DATE_COMP=$(date -d $NEXT_DATE +%s)
                            done
                             DATE_LIST=$DATE_LIST | sed -i 's+ +,+g'
                            DATE_LIST=$(echo -n $DATE_LIST | head -c -1)
                            DATE_LIST=$DATE_LIST"}"
                            echo $DATE_LIST
                            #scp -rp $sourceUser@$sourceHost:$srcDir$pathSeperator$DATE_LIST $targetPath$pathSeperator
                            echo "copied the data for the partition viewdate="$DATE_LIST

따라서 날짜 디렉터리 목록은 {'dir1' 'dir2'}입니다. 그래서 쉼표를 놓쳤어요.

답변1

디렉토리 이름에 공백이 없다고 가정합니다.

echo foo bar baz | sed "s#[^ ]*#'&'#g;s/ /,/g;s/.*/{&}/"

산출:

{'foo','바','바즈'}

관련 정보