仅解压缩特定扩展名
我有一个目录,其中包含 .jpg、.png、.gif 图像的 zip 存档。 我想解压缩每个存档,仅获取图像并将它们放入具有存档名称的文件夹中。
因此:
files/archive1.zip
files/archive2.zip
files/archive3.zip
files/archive4.zip
打开 archive1.zip - 获取 sunflower.jpg、rose_sun.gif。 创建一个文件夹 files/archive1/ 并将图像添加到该文件夹中,即 files/archive1/folder1.jpg、files/archive1/rose_sun.gif。 对每个档案执行此操作。
我真的不知道如何做到这一点,欢迎所有建议。 我有超过 600 个档案,自动解决方案将是我的救星,最好是 Linux 解决方案。
I have a a directory with zip archives containing .jpg, .png, .gif images. I want to unzip each archive taking the images only and putting them in a folder with the name of the archive.
So:
files/archive1.zip
files/archive2.zip
files/archive3.zip
files/archive4.zip
Open archive1.zip - take sunflower.jpg, rose_sun.gif. Make a folder files/archive1/ and add the images to that folder, so files/archive1/folder1.jpg, files/archive1/rose_sun.gif. Do this to each archive.
I really don't know how this can be done, all suggestions are welcome. I have over 600 archives and an automatic solution would be a lifesaver, preferably a linux solution.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
简而言之
您可以通过一行查找+解压缩来完成此操作。
详细信息
unzip
允许您指定所需的文件:并且
-d
目标目录:将其与
find
结合起来code>,您可以提取所有 zip 中的所有图像:使用
unzip -j
来垃圾化 zip 内部目录结构的提取,我们可以在一个命令中完成这一切。 这将为您提供由邮政编码名称分隔的平面图像列表,您希望将其作为一行。一个限制是
unzip -d
不会创建多于一层的新目录,因此首先只需mkdir images
。 享受。In Short
You can do this with a one-liner find + unzip.
In Detail
unzip
allows you to specify the files you want:And
-d
a target directory:Combine that with a
find
, and you can extract all the images in all zips:Using
unzip -j
to junk the extraction of the zip's internal directory structure, we can do it all in one command. This gives you the flat image list separated by zip name that you desire as a one-liner.A limitation is that
unzip -d
won't create more than one new level of directories, so justmkdir images
first. Enjoy.7zip 可以做到这一点,并且有一个 Linux 版本。
(刚刚测试过,有效。)
7zip can do this, and has a Linux version.
(Just tested it, it works.)
大致如下:
这已经过测试,将处理文件名中的空格(zip 文件和提取的文件)。 如果 zip 文件在不同的目录中具有相同的文件名,则可能会发生冲突(如果要扁平化目录结构,则无法避免这种情况)。
Something along the lines of:
This is tested and will handle spaces in filenames (both the zip files and the extracted files). You may have collisions if the zip file has the same file name in different directories (you can't avoid this if you're going to flatten the directory structure).
您可以使用 zip 库编写程序。 如果您使用 Mono,则可以使用 DotNetZip。
代码如下所示:
You can write a program using a zip library. If you do Mono, you can use DotNetZip.
The code would look like this:
Perl 的 Archive-Zip 是一个很好的压缩库/解压缩。
Perl's Archive-Zip is a good library for zipping/unzipping.
这是我对第一个答案的看法...
或者,如果您只想使用常规的解压缩命令...
我还没有测试过这个,但它应该可以工作...或者类似的东西。 绝对比第一个解决方案更有效。 :)
希望这可以帮助!
Here's my take on the first answer...
or, if you'd just like to use the regular unzip command...
I haven't tested this, but it should work... or something along these lines. Definitely more efficient than the first solution. :)
Hope this helps!