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?

Ignacioが正しく指摘したように、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

関連情報