在 Bash 中使用 ZIP 存档
Posted
技术标签:
【中文标题】在 Bash 中使用 ZIP 存档【英文标题】:Work with ZIP archive at Bash 【发布时间】:2014-12-30 04:59:34 【问题描述】:我需要编写一个简单的 Bash 脚本。如何解压缩包含多个文件的存档(在同一目录中)并获取这些解压缩文件的路径?归档路径在 $1 属性中。以及如何使用 $2 路径将这些文件打包回新存档中?谢谢
更新:
我试试这个:
filenames=(zipinfo -1 $1\)
extension=".csv"
unzip $1
for i in "$filenames[@]"
do
:
newfilename=$i:0:$#i-4$extension #change extension to .csv
#...do smth...
zip -r $2 $newfilename
done
但是存档中有空文件“.csv”(没有名称,olny扩展名)。ъ
UPD2:解决了,因为测试目录名为“abc”,我对最后一个字符“$last”=“/”做了一个比较,结果成功了
【问题讨论】:
【参考方案1】:如果 zipfile 是 foo.zip,解压存档,你可以这样做
unzip foo.zip
并列出你可以做的档案中的文件
zipinfo -1 foo.zip
【讨论】:
谢谢,但是如何将存档中的文件写入脚本中的变量? 您可以使用var=(`zipinfo -1 foo.zip`)
捕获存档中文件列表的输出,这会将文件存储到$var
数组中。 $#var[@]
将为您提供数组中元素的数量,$var[n]
将让您访问数组的nth
元素。
再等一下,如果存档目录中有文件怎么办?如何正确处理这个?以上是关于在 Bash 中使用 ZIP 存档的主要内容,如果未能解决你的问题,请参考以下文章