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','바','바즈'}