gpt4 book ai didi

linux - Zip 垃圾路径选项不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:28:48 26 4
gpt4 key购买 nike

我有一点奇怪,我似乎无法弄清楚。

这是设置。我正在下载一堆通过数组提供给脚本的文件。这些文件不一定位于同一文件夹中,因此我认为仅使用 cd 更改目录然后添加我想要的文件是行不通的。

我已经在我的 shell 命令中添加了 -j 以便不包含目录,并且它起作用了......有点。现在我在 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 

最佳答案

您可以结合使用findzip。在与各个文件夹相同的级别运行上述命令。

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 张图像时。

关于linux - Zip 垃圾路径选项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com