.txt.gz
ファイルがたくさんあるディレクトリがあります(名前が特定のパターンに従っていない場合)。
それらをgunzip
する最も簡単な方法は何ですか?元の名前を保持して、whatevz.txt.gz
からwhatevz.txt
に変更したい
これだけはどうですか?
_$ gunzip *.txt.gz
_
gunzip
は、_.gz
_サフィックスなしでgunzippedファイルを作成し、デフォルトで元のファイルを削除します(詳細は以下を参照)。 _*.txt.gz
_は、一致するすべてのファイルにシェルによって展開されます。
この最後のビットは、ファイルの非常に長いリストに拡張される場合、問題を引き起こす可能性があります。その場合は、find
と_-exec
_を使用してください。
マニュアルページからgzip(1)
:
_gunzip takes a list of files on its command line and replaces each file whose name ends with .gz, -gz, .z, -z, or _z (ignoring case) and which begins with the correct magic number with an uncompressed file without the original extension.
_
gzipは、圧縮時に使用されるファイル名を保存および復元できます。圧縮ファイルの名前を変更した場合でも、元の名前に復元されていることに驚かれる可能性があります。
Gzipのマンページから:
デフォルトでは、gzipは元のファイル名とタイムスタンプを圧縮ファイルに保持します。これらは、_
-N
_オプションを使用してファイルを解凍するときに使用されます。これは、圧縮ファイル名が切り捨てられた場合、またはファイル転送後にタイムスタンプが保持されなかった場合に役立ちます。
また、メタデータに保存されているこれらのファイル名は、file
でも表示できます。
_$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
$ file myfile_new.gz
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug 5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz # gunzip without -N
$ ls myfile_*
myfile_new
$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz
# gunzip with -N
$ gunzip -N myfile_new.gz # gunzip with -N
$ ls myfile_*
myfile_orig
_
.gz
ファイルを保持する場合は、以下を使用できます:$ gunzip -c inputfile.gz >outputfile
次のコマンドを使用して、現在のディレクトリ内のすべてのファイルをgunzip(gzファイルを解凍)し、元のファイルを保持します。
gunzip -k *.gz