web-dev-qa-db-ja.com

特定のファイルが圧縮されているかどうかを確認する

Linuxでコマンドを使用して特定のファイルが圧縮されているかどうかを知る方法は?

15
manalisha

たとえば、fileを使用してみてください。

$ file test.sh.gz
test.sh.gz: gzip compressed data, was "test.sh", from Unix, last modified: Wed Feb  6 14:35:33 2013
18
Leonid

fileコマンドを実行します。圧縮ファイルやその他の一般的なファイル形式を識別します。

Zipは一般的なコンテナ形式であることに注意してください。例えば。 EPUBおよびOpenDocumentファイルは、実際には特定のコンテンツを含むZipファイルです。私のバージョンのfileはOpenDocumentファイルを認識しますが、認識しない場合は、OpenDocumentファイルがZipファイルであると言う場合があります。これはあなたが考えていた結果ではないかもしれません:)。

わかりやすくするために、OpenDocumentのように「このファイルは圧縮されている」、またはPNGまたはJPEGとして圧縮された画像であることを意味しているとは限りません。たぶん、Zipやunix tarなどの「このファイルはアーカイブか」、またはgzipのような単一ファイルのアーカイブでしょうか。

ただし、通常はWindowsのようにファイル拡張子を確認するだけです。同様に、.ZipはZipファイルを意味し、.gzはgzipを意味します。 Linuxでは、.bz2(bunzip2)と.xz(xz)も表示される可能性があります。

3
sourcejedi

file コマンドを実行すると、ファイルが圧縮形式のように見えるかどうかを確認できます。

file lorem.txt lorem.txt.gz
lorem.txt:    ASCII text
lorem.txt.gz: gzip compressed data, from Unix, last modified: Thu Feb  7 02:10:44 2013, max compression

fileは、フォーマットを認識しない場合、「データ」とだけ表示します。また、何が圧縮されているかどうかを判断するのはあなた次第です(たとえば、「ASCIIテキスト」、「PPM」、「WAVEオーディオ」は圧縮されていません。「gzip圧縮データ」、「JPEG画像」、「Vorbisオーディオ」は圧縮されています)。 。

ファイルが圧縮されているように見えるかどうかを検出する別の方法は、ファイルを圧縮することです。サイズを大幅に削減できない場合、ファイルはおそらく圧縮または暗号化されています。

wc -c somefile
gzip <somefile | wc -c

bashスクリプト

if (file yourTestFile | grep -q compressed ) ; then
     echo "Yes, yourTestFile is compressed"
fi
1