linux – 仅解压缩特定扩展名

前端之家收集整理的这篇文章主要介绍了linux – 仅解压缩特定扩展名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个包含.jpg,.png,.gif图像的zip档案目录.我想解压缩每个存档,只获取图像并将它们放在一个带有存档名称文件夹中.

所以:

files/archive1.zip
files/archive2.zip
files/archive3.zip
files/archive4.zip

打开archive1.zip – take sunflower.jpg,rose_sun.gif.创建文件夹files / archive1 /并将图像添加到该文件夹​​,so files / archive1 / folder1.jpg,files / archive1 / rose_sun.gif.对每个存档执行此操作.

我真的不知道如何做到这一点,欢迎所有的建议.我有超过600个档案,自动解决方案将成为救星,最好是Linux解决方案.

最佳答案
有点像:

#!/bin/bash
cd ~/basedir/files
for file in *.zip ; do
    newfile=$(echo "${file}" | sed -e 's/^files.//' -e 's/.zip$//')
    echo ":${newfile}:"
    mkdir tmp
    rm -rf "${newfile}"
    mkdir "${newfile}"
    cp "${newfile}.zip" tmp
    cd tmp
    unzip "${newfile}.zip"
    find . -name '*.jpg' -exec cp {} "../${newfile}" ';'
    find . -name '*.gif' -exec cp {} "../${newfile}" ';'
    cd ..
    rm -rf tmp
done

这是经过测试并将处理文件名中的空格(zip文件提取文件).如果zip文件在不同的目录中具有相同的文件名,则可能会发生冲突(如果要展平目录结构,则无法避免这种情况).

猜你在找的Linux相关文章