如何在unix中压缩文件名中包含空格的文件

时间:2017-12-04 22:49:50

标签: bash file unix zip spaces

有没有办法可以压缩文件名中包含空格的文件?我实际上是在制作一个场景。任何有关如何处理此问题的帮助都非常有用。提前谢谢。

我有一个包含多个文件名列表的文本文件。可怕的部分是文件名由文件名末尾的空格组成。 示例:文本文件 - DMI.txt

DMI.txt中的数据

DMI1 .txt
DMI2 .txt
DMI3 .txt

我需要压缩每个文本文件,但zip命令正在处理" DMI1"作为1个文件和" .txt"作为另一个文件。

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)

1 个答案:

答案 0 :(得分:1)

转义引号导致引号被视为文件名的文字部分。你不需要它。

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

另外,第一行

recdmi=$(cat $jobdir/import_dmi_hourly_file_list.txt)
不需要

,因为您立即将变量重新分配给read -r recdmi