ZIPファイル内の特定のファイルのみ抽出してZIPファイルを作成
したいのですが、パイプ等を使ってうまくできないでしょうか?
次のようにコマンドをいくつかあわせればとりあえず出来るのですが…
mkdir temp
unzip src.zip *.jpg -d temp
cd temp
zip -m ..\dst.zip *
もっとよい方法をご存知の方がいましたらご教授願います。
次のようにも試してみたのですが、うまくいきませんでした。
unzip -p src.zip *.jpg | zip dst.zip -
OSはWindowsXPです。
ZIPプログラムは必要であれば特定のZIPプログラムを
使用してもいいです。
No.2ベストアンサー
- 回答日時:
ANo.1 です。
そうですね。簡単なコマンドですむ方法はむずかしいかもしれませんね。
それでは、思いついたことをいくつか。
(1) zip 内のファイルを削除する方法の場合。
新しい zip ファイルを 3 個つくるなら、3 個以上のコマンドが必要でしょう。
copy src.zip 1.zip & zip -d 1.zip "*" -x "?.jpg" "??.jpg" "???.jpg"
copy src.zip 1000.zip & zip -d 1000.zip "*" -x "1???.jpg"
copy src.zip 2000.zip & zip -d 2000.zip "*" -x "2???.jpg"
上の 3 行を 1 行につないでもよいのでしょうが、ややこしくなるだけでしょう。
ファイル名が簡単なワイルドカードで表せる場合は、これでどうでしょうか。
(2) *.jpg のファイル名が簡単なワイルドカードで指定できない場合。
(たとえば数字といっしょにアルファベットが混じるファイル名があって、それは zip ファイルにしたくないとか)
ファイル名がいろいろあって簡単に指定できない場合は、ファイル名のリストを作っておくのがわかりやすいでしょう。
ファイル名がわからないときは
zipinfo -1 src.zip "1???.jpg" > 1000.lst
などとしていったんリストを作って、余計なファイルが混じるならあとで編集するなどの手間が必要かもしれません。
そのうえで、unzip でひとつずつ展開して、そのたびに zip でアーカイブに加えていくとかは、どうでしょう。
for /f %i in (dst.lst) do (
unzip src.zip %i
zip -m dst.zip %i
)
バッチファイルにして、dst のところを 1 とか 1000 とか 2000 とかのコマンドライン・パラメータで与えるのもいいかもしれません。
ファイル名の番号に規則性があるならリストファイルにしないで、
for /l %i in (1 1 999)
などと、連続した番号を生成するのもありかなと思います。
遅い返答ですみませんが・・・・
最後のループする方法は思いつきませんでした。
これは使えそうです!
ありがとうございました!!!
No.1
- 回答日時:
zip -d src.zip "*" -xi "*.jpg"
これでどうでしょうか (InfoZIP の場合) src.zip から *.jpg 以外が削除されます (src.zip は変更されます)
unzip と zip を組み合わせてパイプでつなぐのは、うまくいかないと思います。
質問欄にも
> うまくいきません
とありますが、どううまくいかないのか書いてありませんので、以下は想像です。
zip は各ファイルを圧縮してからアーカイブするので (アーカイブ化したひとつのファイルを圧縮するわけではない) それぞれのファイル名とタイムスタンプ、アトリビュートなどの情報が必要だと思います。
それに、パイプで複数ファイルを渡すと、つながってしまいます。JPEG 画像の場合、最初の画像の EOI (end of image) マーカ以降は無視されるので、最初の画像しか見えなくなるのではないでしょうか。
この回答への補足
本当は「番号.jpg」が複数入ったZIPファイルを例えば
~999番→1.zip
1000番台→1000.zip
2000番台→2000.zip
のように小さく分けたZIPファイルにしたいのです。
なので、削除する方法もあまりこの場合は効率的ではありません。
しかし、完璧な方法はないのかもしれませんね。
なるほど、変則的ですが、他のファイルを削除することによって
特定のファイルのZIPを作るという方法がありますね。
パイプで上手くいかない理由はたぶん、その通りだと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(セキュリティ) PDFファイルのパスワード設定について 1 2022/06/25 10:10
- その他(セキュリティ) ZIPというファイルでパスワード付きPDFファイルが送られてきたのですが、 パスワードを入力▶︎ファ 3 2022/07/26 19:44
- Windows 8 メール送信、zipファイル PDFについて 回答お願いいたします。 Windows8 メールはサクラ 1 2022/05/12 17:49
- InternetExplorer(IE) 【至急】エクスプローラーでの解凍 3 2023/08/01 15:06
- ノートパソコン パソコンでZIPファイルをダウンロードしたいとき、 このような表示が出てダウンロードができないときは 2 2023/06/20 15:37
- iPhone(アイフォーン) iPhone ファイル iPhoneのファイルで写真をzipに圧縮した後もう一度展開すると画質は変わ 3 2022/10/21 21:53
- C言語・C++・C# web上にギガファイルとかのウェブ上にzipファイルを載せれるサイトがあったと思うのですが、教えて頂 3 2022/09/17 02:26
- その他(コンピューター・テクノロジー) ギガファイル便で送ったzipファイルの中のwavファイルが空だと言われたのですがどういう可能性が考え 2 2022/04/24 22:29
- Android(アンドロイド) 携帯のメモリーが少なくなって来ました。 2 2023/05/16 07:10
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
binファイルを解凍したいの...
-
.NETアプリを作ったときの .man...
-
#include <Windows.h>というヘ...
-
公文書のxmlファイルの開き方が...
-
VBAでのicsファイル変換
-
アクセス 壊れた? 「ファイ...
-
VBAのバイナリ出力について
-
自分で作成した重要ファイルを...
-
CRCが一致する確率
-
ファイルが開かれているかどう...
-
csvファイルについて教えて下さ...
-
Latexで図番号だけを「図1.1」...
-
ADODB.Streamで開いたファイル...
-
VBSが起動しない
-
実行ファイル(.exeファイル)...
-
参照するファイルをワイルドカ...
-
warファイルをEclipseでプロジ...
-
リンクの張り付けかたを教えて...
-
HTMLを正しく表示させるには
-
Word VBA MSGBOX 内で降順表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
iPhoneでXMLファイルを開くには...
-
公文書のxmlファイルの開き方が...
-
binファイルを解凍したいの...
-
アクセス 壊れた? 「ファイ...
-
.NETアプリを作ったときの .man...
-
リンクの張り付けかたを教えて...
-
#include <Windows.h>というヘ...
-
jarファイル
-
Seasar2のdiconファイルの読み方
-
Word VBA MSGBOX 内で降順表示
-
監視ツールを入れさせられまし...
-
CSSを1ページに1枚作るのって変...
-
コマンドプロンプトで、指定し...
-
ファイルが開かれているかどう...
-
exeファイルをデータ転送サービ...
-
パイソンでpy ファイルと p...
-
exeファイルの中身を見る方法は...
-
Latexで図番号だけを「図1.1」...
-
参照するファイルをワイルドカ...
-
バッチ処理で追記コピーしたい
おすすめ情報