我有点奇怪,我似乎无法弄清楚。
这是设置。我正在下载一堆通过数组提供给脚本的文件。这些文件不一定在同一个文件夹中,所以我不认为只是使用cd来更改目录,然后添加我想要的文件。
我已将-j添加到我的shell命令中,以便不包含目录,并且它有效...有点儿。现在我将所有文件放在zip的顶层,但它还包括相应目录中文件的目录和重复版本。
有什么想法吗?
编辑:添加了代码。
我有一个像这样的文件数组:
Images
--image1.jpg
--image2.jpg
Other images
--image3.jpg
--image4.jpg
Other folder\Another subfolder\Why so many folders\
--image5.jpg
所以我想要的是将所有图像放在zip的根目录中,但我得到的是一个zip中的目录和垃圾目录:
Zip
--Images
--image1.jpg
--image2.jpg
--Other images
--image3.jpg
--image4.jpg
--Other folder
--Another subfolder
--Why so many folders
--image5.jpg
--image6.jpg
--image1.jpg
--image2.jpg
--image3.jpg
--image4.jpg
--image5.jpg
--image6.jpg
我的代码很简单,我使用-j去掉目录并将文件数组传递给zip。如果我删除了-j,它只包含一个文件副本,虽然在文件夹中,所以我知道问题不是我的数组加倍了文件。
zip -jq zip array_of_files
修改 解决了。那种。
出于某种原因,当我将-j放在命令行的末尾时,它按预期工作。不确定为什么这很重要,但它修复了它。这是有效的。
zip zipname array_of_files -jq
答案 0 :(得分:1)
您可以同时使用find
和zip
的组合。在与单个文件夹相同的级别运行上述命令。
find . -type f -name "*.jpg" -print | zip -jq myfile.zip -@
find命令列出当前路径中的jpg
个文件,-@
中的zip
选项是从上一个命令生成的stdin
读取的。以及垃圾路径的-jq
标志。
通过上述命令,我能够按照您的意图实现结构。使用unzip -l
列出存档下的文件而不提取。
$ unzip -l myfile.zip
Archive: myfile.zip
Length Date Time Name
-------- ---- ---- ----
0 11-26-16 13:08 image1.jpg
0 11-26-16 13:09 image2.jpg
0 11-26-16 13:09 image3.jpg
0 11-26-16 13:09 image4.jpg
-------- -------
0 4 files
当你总共有4张图片时,上面的我的模拟是你的原始输入。