質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

1481閲覧

Linuxで「unzip -p zipファイル名」の標準出力結果をパイプによって、解凍したい

tetakaha759

総合スコア20

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2023/02/13 10:56

実現したいこと

タイトルの通りですが、Linuxで「unzip -p ziipファイル名」の出力結果を、パイプによって解凍する方法を探しています。

ただ単に「unzip zipファイル名」とすれば解凍できるのは分かっています。

そうではなく、「unzip -p zipファイル名 | XXXXXXX」として、パイプを使って何らかのコマンド等に引き渡し、通常通りにzipファイルを解凍手段を求めております。

発生している問題・エラーメッセージ

「unzip zipファイル名 > dummy」などとすると、解凍はできているが全ての中身がが繋がっているような1つのファイルが出来上がるだけです。

$ unzip -p XXXXXXXX.zip > dummy $ file dummy dummy: ASCII text

 
標準出力に解凍結果が出てくるため、パイプで何らかのコマンドへ繋げれば良いのでは、と考えたのですが、Google等で検索しても有効な情報は得られませんでした。

パイプ以外でも標準出力から解凍されたファイル/ディレクトリを書き込めるのであれば、それでも問題ありません。

本件をご存じの方がいらっしゃるのであれば、アドバイスを頂けませんでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2023/02/13 11:24

何を求めているのか、がわからない。 unzip zipファイル名 の結果では何が不満で、どのような結果になることを求めている?
tetakaha759

2023/02/13 11:51

実際にやりたいことは、「unzip -p zipファイル名 | pv | XXXXX(求めているコマンドなど)」によって、解凍後のサイズによる進捗を確認するためです。
yuma.inaura

2023/02/13 12:08

パイプを通して結果が次のコマンドに渡されるのは前のコマンドの完了時だと思うので 解凍の進捗率はパイプでは無理かも
melian

2023/02/13 12:47

p7zip ならデフォルトで進捗率を表示します。 https://p7zip.sourceforge.net/ Ubuntu であれば、 $ apt install p7zip でインストールします。
guest

回答2

0

ベストアンサー

解凍結果をパイプで次のプログラムに渡したいと言うことでしょうが、「パイプによって解凍したい」が意味不明です。

「unzip -p zipファイル名 | XXXXXXX」として、パイプを使って何らかのコマンド等に引き渡し、通常通りにzipファイルを解凍手段を求めております。

「unzip -p zipファイル名」で解凍は出来ています。
解凍結果がそのまま、コマンド XXXXXXX の標準入力に与えられます。
パイプが解凍することは不可能です。解凍する主体はunzipコマンドです。

解凍はできているが全ての中身がが繋がっているような1つのファイルが出来上がるだけです。

「unzip -p zipファイル名」はzipファイルを構成する全てのファイルを解凍するのでそうなります。

内容を1つずつ欲しいのであれば、「unzip -p zipファイル名 欲しい中身のファイル名」とファイルを指定します。

例:一つずつ解凍して次のプログラムにファイル名を引数にして渡す

bash

1for f in $(zipinfo -1 foo.zip) 2do unzip -p foo.zip "$f" | XXXXXXX "$f" 3done

あるいは、繋がった全体のデータを受け取って、それをもとの複数のファイルに分割したいと言うことなら、「zipinfo zipファイル名」で構成するファイルの名前とサイズが取得できるので、そのサイズで頭から順番に分割すれば良いでしょう。上記の方が簡単ですね。
巨大なzipファイルを扱うので上記だと時間が掛かりすぎると言うことであれば、後者のように繋がった物を受け取ってサイズで分割でしょうが。

投稿2023/02/13 11:50

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

間違って「回答」の方に記載してしまったので、削除しています。

投稿2023/02/13 11:47

編集2023/02/13 11:50
tetakaha759

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問