在Linux上从zip存档中删除单个文件

亚历克斯·弗洛(Alex Flo)

我有一个zip存档(在带有-j -r标志的脚本中自动创建),我想从中删除一个文件。我尝试了记录。

zip -d "picture_43_9.jpg" gallery.zip

但是我得到这个错误:

zip warning: picture_43_9.jpg not found or empty   
zip error: Nothing to do! (picture_43_9.jpg)  

无论如何,有在归档中这样的文件,它不是空的:

unzip -l .../gallery.zip | grep -i 43_9.jpg  
1477092  2013-05-22 14:23   picture_43_9.jpg 

关于我在做什么错的任何想法吗?

杰帕尔·辛格(Jaypal Singh)

您已交换了参数。试试这个:

zip -d gallery.zip "picture_43_9.jpg" 

zip(1)手册页中:

-d
--delete
从zip存档中删除(删除)条目。例如:

zip  -d  foo  foo/tom/junk  foo/harry/\*  \*.o

将删除条目foo/tom/junk,以开头的foo/harry/所有文件以及以结束的所有文件.o(在任何路径中)。请注意,使用反斜杠禁止了shell路径名的扩展,因此zip可以看到星号,从而使zip能够匹配zip归档文件的内容而不是当前目录的内容。(在基于MSDOS的平台上不使用反斜杠。)也可以使用引号将星号转义,如下所示:

zip -d foo foo/tom/junk "foo/harry/*" "*.o"

在外壳扩展通配符的系统上未转义星号可能会导致星号转换为当前目录中的文件列表,并且该列表用于从存档中删除条目。

在MSDOS下,-dzip归档文件中的名称匹配时区分大小写如果在MSDOS系统上使用PKZIP压缩了文件名,则要求输入的文件名必须大写。(我们考虑做在哪里路径是不区分大小写系统,这不区分大小写,但可以存档来自哪里的情况下此事做了系统和档案可以包括Barbar与存档单独的文件。)但是看到新的选项- ic忽略存档中的大小写。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章