将文件夹解压缩到保留压缩文件夹名称的父目录

时间:2013-12-11 14:46:42

标签: bash zip unzip

我的文件结构如下:

  • 档案/
    • 拉链/
      • zipfolder1.zip
      • zipfolder2.zip
      • zipfolder3.zip
        ...
      • zipfolderN.zip

我有一个脚本将文件夹解压缩到父目录“archives”,但它将文件夹的内容解压缩到“archives”目录。我需要将压缩文件夹保留为“archives”目录下的文件夹。生成的文件结构应如下所示:

  • 档案/
    • 拉链/
      • zipfolder1.zip
      • zipfolder2.zip
        ...
    • zipfolder1 /
      • 内容...
    • zipfolder2 /
      • 内容...
    • ...

我目前正在使用以下内容:

find /home/username/archives/zips/*.zip -type f | xargs -i unzip -d ../ -q '{}'

如何修改此行以保留原始文件夹名称?是否像使用../*一样简单?

1 个答案:

答案 0 :(得分:2)

您可以使用basename将zip解压缩到所需的目录中:

find /home/username/archives/zips/*.zip -type f -exec sh -c 'unzip -q -d ../"$(basename "{}" .zip)" "{}"' \;