【问题标题】:how to zip a file having spaces in the filename in unix如何在unix中压缩文件名中有空格的文件
【发布时间】:2018-05-18 12:04:04
【问题描述】:

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

我有一个包含多个文件名列表的文本文件。可怕的部分是文件名由文件名末尾的空格组成。 示例:文本文件 - 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)

【问题讨论】:

  • 您是否真的想将这些引号放入文件名中?如果没有,我认为你应该使用: zip "${srcdir}/${recdmi}.zip" "${srcdir}/${recdmi}"

标签: bash file unix zip spaces


【解决方案1】:

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

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

还有,第一行

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

不需要,因为您会立即使用 read -r recdmi 重新分配变量。

【讨论】:

  • 仍然收到相同的错误------- 压缩警告:名称不匹配:/home/nkoka/nk_dmi_partner_ingestion/DMI_2017-11-16_08 压缩警告:名称不匹配:.txt 压缩错误: 没事做! (/home/nkoka/nk_dmi_partner_ingestion/DMI_2017-11-16_08 .txt.zip)
  • 你确定你的文件名在.txt之前真的有一个空格吗?将ls "$srcdir" 的输出添加到问题中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2021-08-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多