2017-12-04 14 views
-2

파일 이름에 공백이있는 파일을 압축 할 수있는 방법이 있습니까? 나는 실제로 시나리오에서 일하고있다. 이를 처리하는 방법에 대한 도움은 매우 유용합니다. 미리 감사드립니다.유닉스 파일 이름에 공백이있는 파일을 압축하는 방법

나는 여러 개의 파일 이름 목록을 포함하는 텍스트 파일을 가지고 있습니다. 끔찍한 부분은 파일 이름이 파일 이름 끝에 공백으로 구성된다는 것입니다. 예 : 텍스트 파일 - DMI.txt

DMI1 .txt 
DMI2 .txt 
DMI3 .txt 

에서 DMI.txt

데이터 나는 각 텍스트 파일을 압축 할 필요가 있지만, 우편 명령은 1 개 파일 "이 .txt"로 "DMI1"를 치료한다 다른 파일.

코드

recdmi=$(cat $jobdir/import_dmi_hourly_file_list.txt) 
while IFS= read -r recdmi 
do 
    echo $recdmi 
    zip "$srcdir/\"${recdmi}\".zip" $srcdir/\"${recdmi}\" 
    #mv "$srcdir/\"${recdmi}\".zip" $arcdir 
    #rm $srcdir/\"${recdmi}\" 
    echo "$srcdir/\"${recdmi}\".zip $srcdir/\"${recdmi}\"" 
done < $srcdir/import_dmi_hourly_file_list.txt 

출력 오류 따옴표는 따옴표 파일명의 문자 부분으로 간주되게된다 이스케이프

/home/nkoka/nk_dmi_partner_ingestion/"DMI_2017-11-20_10 .txt".zip /home/nkoka/nk_dmi_partner_ingestion/"DMI_2017-11-20_10 .txt" 

zip warning: name not matched: /home/nkoka/nk_dmi_partner_ingestion/"DMI_2017-11-20_10 

zip warning: name not matched: .txt" 

zip error: Nothing to do! (/home/nkoka/nk_dmi_partner_ingestion/"DMI_2017-11-20_10 .txt".zip) 
+0

실제로 파일 이름에 해당 따옴표를 넣으려고합니까? 그렇지 않으면 zip "$ {srcdir}/$ {recdmi} .zip"을 사용해야합니다. "$ {srcdir}/$ {recdmi}" – EdmCoff

답변

1

이다. 너는 필요 없어. 즉시 read -r recdmi와 변수를 다시 지정하기 때문에 또한

zip "$srcdir/${recdmi}.zip" "$srcdir/${recdmi}" 

, 첫 번째 줄

recdmi=$(cat $jobdir/import_dmi_hourly_file_list.txt) 

은 필요하지 않습니다.

+0

은 여전히 ​​동일한 오류가 발생합니다. : 일치하지 않는 이름 :/home/nkoka/nk_dmi_partner_ingestion/DMI_2017-11-16_08 zip 경고 : 이름이 일치하지 않음 : .txt 우편 오류 : 아무것도 할 필요가 없습니다! (/ home/nkoka/nk_dmi_partner_ingestion/DMI_2017-11-16_08 .txt.zip) – pran

+0

'.txt' 전에 파일 이름에 실제로 공간이 있습니까? 'ls "$ srcdir"의 결과를 질문에 추가하십시오. – Barmar