..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
この場合)に名前を変更し、元のファイルを削除します。