"zipinfo"を使用して非再帰的にアーカイブの内容を一覧表示する

"zipinfo"を使用して非再帰的にアーカイブの内容を一覧表示する

zipinfoアーカイブの内容を非再帰的にリストするためにコマンドに渡すことができるフラグはありますか?

たとえば、ターゲットアーカイブに3つのディレクトリがあり、各ディレクトリに5つの空のディレクトリが含まれている場合、コマンドは15の要素を返すのではなく3つの「トップ「または」最初のレベル「目次です。

これはどのように達成できますか?

答え1

zipファイル形式の場合、「再帰的」ではありません。これには、名前にスラッシュ(またはより一般的にはパス区切り文字)を含むファイルのリストのみがあります。

したがって、実際にはzipには15個の「フラット」アイテム(15個の「リーフ」ディレクトリ)があります。上記のディレクトリは、そのディレクトリへのパスの一部であるため、暗黙的です。

したがって、すべての最上位ディレクトリを見つけるには必要ですみんなエントリを選択し、最初のパスコンポーネントを抽出してから重複エントリを削除します。

zipinfo -1 | sed -n 's;\([^/]*\)/.*;\1;p' | sort -u

いくつかの注意点があります

  • ファイル名に改行があるときにzipinfoがどのように機能するかわかりません。
  • コンピュータ間でファイルを移動する場合は、権限、スパース性、所有権などが必要です。zipは正しいツールではありません、こんなことができないからです。または、同様のツールを使用して以下をmksquashfs実行できます。アーカイブの作成一般的に圧縮が良く、すぐに使用するかudisksctl loop-setup -f archive.squashfs(必要に応じてudisksctl mount /dev/loopN)直接インストールすることができ、mkdir mntdir; sudo mount -o loop archive.squashfs mountdirその後、lsお気に入りのファイルブラウザで一般的なファイル管理を使用してほぼ無料でコンテンツをスキャンできます。

関連情報