gz 拡張子のない gzip ファイルの一括解凍

gz 拡張子のない gzip ファイルの一括解凍

..0_1234 .0_4213その.0_4132一部はgzip圧縮されており、一部は生の電子メールです。どのファイルが圧縮ファイルであるかを確認し、そのファイルを解凍し、すべての圧縮ファイルを解凍してから、すべてのファイルの名前を共通の拡張子に変更する必要があります。私はfileコマンドを使用して何が圧縮されているかを確認し、結果をgrepし、を使用してsed出力をファイルリストに減らすことができることに気づきました。しかし、見かけ上ランダムに見える拡張子を解凍する方法はわかりませんでした。これが私が今まで持っているものです

file *|grep gzip| sed -e 's/: .*$//g'

xargs出力に提供されているファイルのリストを取得して.gz解凍するために名前を変更したり、単にオンラインで解凍したり、何かを使用したいと思います。

ベストアンサー1

使用しないで、gzip代わりにzcat拡張を必要としないものを使用してください。一度にすべてを行うことができます。ファイルを試してくださいzcat。圧縮されていないために失敗すると、cat次のようになります。

for f in *; do 
    ( zcat "$f" || cat "$f" ) > temp && 
    mv temp "$f".ext && 
    rm "$f" 
done

上記のスクリプトは最初にzcatファイルの書き込みを試みtemp、失敗した場合(ファイルがgzip形式ではない場合)にcat直接書き込みを試みます。これはサブシェルで実行され、コマンド実行の出力をキャプチャし、それを一時ファイル(temp)にリダイレクトします。次に、temp元のファイル名と拡張子(.extこの場合)に名前を変更し、元のファイルを削除します。

おすすめ記事