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

Modified on: Sun, 13 Jan 2019 08:20:02 +0800

我有一个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 

关于我做错的任何想法?

最佳答案

你交换了参数。试试这个:

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"

  
  

不会在shell扩展的系统上转义星号
  通配符可能会导致星号转换为列表
  当前目录中的文件以及用于删除条目的列表
  来自档案。

  
  

在MSDOS下,-d在匹配时区分大小写
   zip 存档中的名称。这需要输入文件名
  如果在MSDOS系统上被PKZIP压缩,则为大写。 (我们
  考虑使这种情况对路径所在的系统不敏感
  不区分大小写,但存档可能来自系统
  案件确实重要,档案可以包括Barbar
  作为档案中的单独文件。)但请参阅新选项-ic
  忽略档案中的案例。


相关问答

添加新评论