コンテンツに圧縮されていないファイルが二重gzipで誤って圧縮されました。

コンテンツに圧縮されていないファイルが二重gzipで誤って圧縮されました。

誤って2回圧縮されたファイルがあります。ファイル拡張子なし

たとえば、gzip -dc fileいくつかのファイルはいくつかのバイナリ横説説を出力しますが、他のファイルは問題ありません。

フォルダ内の二重gzip圧縮ファイルを見つけて(すべてのファイルが二重gzipで圧縮されているわけではありませんが、すべてのファイルが少なくとも一度はあります)、自動的に単一のgzip圧縮状態に復元できるコマンドを実行したいと思います。

ベストアンサー1

次のことができます。

for file in *; do 
    zcat -- "$file" | 
        file - | 
            grep -wq compressed && 
                gunzip -- "$file"
done

これには任意のファイル名で実行できるという利点があります。あなたの方法としてls、参照http://mywiki.wooledge.org/ParsingLs)もはるかにシンプルに見えます。少なくとも私にとってはそうだ。

.gz欠点は、拡張子のないgzipファイルで終わることができることです。しかし、これは簡単に解決されます:

for file in *; do 
    case "$file" in 
        *.gz) ;; 
        *) file -- "$file" | 
            grep -wq compressed && 
                mv -v -- "$file" "$file".gz;; 
    esac
done

おすすめ記事