有没有办法可以压缩文件名中包含空格的文件?我实际上是在制作一个场景。任何有关如何处理此问题的帮助都非常有用。提前谢谢。
我有一个包含多个文件名列表的文本文件。可怕的部分是文件名由文件名末尾的空格组成。 示例:文本文件 - 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)
答案 0 :(得分:1)
转义引号导致引号被视为文件名的文字部分。你不需要它。
zip "$srcdir/${recdmi}.zip" "$srcdir/${recdmi}"
另外,第一行
recdmi=$(cat $jobdir/import_dmi_hourly_file_list.txt)
不需要,因为您立即将变量重新分配给read -r recdmi
。