在 Solaris 上解压缩特定文件夹的内容

在 Solaris 上解压缩特定文件夹的内容

我尝试解压缩 zip 文件的特定文件夹的内容。我的 zip 文件结构如下所示:

  • 文件夹1
    • 文件夹1_1
    • 文件1_1
  • 文件夹2
  • 文件夹3
  • 文件1
  • 文件2

我只想解压内容文件夹 1 的。

我尝试使用:

unzip -d path_to_unzip/ results.zip 'folder1/*'

不幸的是它创建了一个像这样的结构:

path_to_unzip/folder1/folder_1_1 等...

如何归档以删除不必要的文件夹1?

提前谢谢了!

答案1

如何归档以删除不必要的文件夹1?

正如伊格纳西奥正确指出的那样,unzip不能。

我会提出这样的建议:

TMPDIR=`mktemp -d` || exit 1
unzip -d ${TMPDIR}/ results.zip 'folder1/*'
mv ${TMPDIR}/folder1/* path_to_unzip/
rm -r ${TMPDIR}

基本上,由于mv单个文件系统上的文件操作是原子的,例如“几乎”立即执行,因此不会对性能产生真正的影响......只要您/tmp与目标路径位于同一文件系统上。如果不是,并且 ZIP 文件很大,您应该将其解压到目标文件系统上的临时文件夹中。在这里,我们获取目标目录的父目录:

TMPDIR=`mktemp -p path_to_unzip/.. -d` || exit 1

相关内容