ディレクトリとサブディレクトリにある複数のgzipファイルを抽出するにはどうすればよいですか?


10

gzipgunzipコマンドの両方を試しましたが、どちらかが表示されます

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

この-fオプションを試してみると、1つのファイルで作業するのに非常に長い時間がかかり、コマンドが正常に実行されません。何か不足していますか?


1
ディレクトリには、次のような名前がハイフンで始まる.gzファイルが含まれてい-Y.something.gzますか?もしそうなら、あなたは、GNU使用する必要があり--、それらはつまり、ファイル名ではなく、オプションとして扱われることを保証するために旗をgunzip -- *.gz
steeldriver

@steeldriverはい私はいくつかのファイルで始まります
Herman Toothrot 2015年

2つの問題のうち少なくとも1つが原因でした。
Herman Toothrot 2015年

回答:


16

以下のコマンドを使用できます。

.gzファイルがあるディレクトリに移動し、コマンドを実行します。

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

元の名前のすべてのファイルを抽出し、現在のユーザーのホームディレクトリ(/home/username)に保存します。別の場所に変更できます。

編集:

gunzip *.gz

このコマンドも機能します。ただし、デフォルトでは、元のファイルを置き換えます。


私が私の質問に書いたことを読みましたか?gunzip * .gzが機能しません。しかしforループは機能し、私は困惑しています。
Herman Toothrot 2015年

しかし、それは私や他の人にとってはうまくいきますが、なぜ `invalid option-'Y'`と表示されるのですか?私はあなたのファイル形式が良くないか、コマンドに何か欠けていると思います。
pl_rock 2015年


4

オプション1:単一引用符を使用して複数のファイルを解凍する(ショートバージョン)

gunzip '*.gz'

それに注意してください*.gzので、シェルはワイルドカード文字として認識しないこと、言葉が2つの単一引用符の間に置かれています。

オプション#2:シェルforループを使用して複数のファイルを解凍する(長いバージョン)

for g in *.gz; do gunzip $g; done

起源

編集:

私が試したところ:

gunzip -dk *.gz

そしてそれは働いた。

-d解凍kして元のファイルを保持します。


gunzip ‘*.gz’ このコマンドを確認しましたか?このコマンドを実行できません。それはエラーを与える。
pl_rock 2015年

使用しgunzip '*.gz'ないgunzip ‘*.gz’ ' 'ない`` `)
ビラル

私はあなたのコマンドをコピーして貼り付けるだけですが、gzip: *.gz: No such file or directory新しいものも機能しません。試しましたか?
pl_rock 2015年

gunzip '* .gz' gzipは機能しません:* .gz:そのようなファイルやディレクトリはありません
Herman Toothrot

申し訳ありません、私はそれを試しませんでした!私は今Windowsにいます:(
Bilal

0

Linuxユーザー:

現在のディレクトリとそのサブディレクトリにある最小量の.gzファイルを抽出するには、次のコマンドを使用します

gunzip *.gz

現在のディレクトリとそのサブディレクトリにある任意の数の.gzファイルを抽出するには、次のコマンドを使用します

sudo find . -name "*.gz" | xargs gunzip
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.