2016-11-18 1 views
-1

解凍方法.gz指定フォルダ内のすべてのアーカイブを削除せずに保存しますか?削除しないでgunzipするには?

私が試した:gunzip *.gz /folder

+0

'man gunzip'を実行し、読み込みをします。 –

+4

私はプログラミングに関連していないので、この質問をトピックとしてクローズすることに投票しています。 – PeeHaa

+0

'' man gunzip'を試しました。たくさんのパラメータを取得します。 – Goga

答えて

0

gzip--stdoutオプションを使用して、いくつかのbashスクリプトで行われ、bashの置換で圧縮されていない名前を計算することができます。

for i in *.gz 
do 
    echo unzipping $i to /folder/${i/.gz} 
    gunzip --stdout "$i" > "/folder/${i/.gz}" 
done 

現在の実装では、スペース

+0

なぜ 'gz'をもう一度解凍するのですか? – Goga

+0

私はしません。これは '.gz'拡張子を何も指定しないでbashに置き換えたものです。 –

+0

'予想外のトークン' do'の近くで構文エラーが発生する – Goga

0
を含むファイル名で失敗
find /source/dir/ -type f -name '*.gz' \ 
    -exec bash -c 'gunzip -c "$0" > "/folder/${0%.gz}"' {} \; 

このコマンドは、すべてを検索します*.gzファイルを/source/dir/ディレクトリに格納し、各ファイルに対してbashコマンドを実行します。 bashコマンドはファイル($0)を標準出力に解凍し、結果を"/folder/${0%.gz}"にリダイレクトします。後者は、.gz拡張子なしでファイル名と連結された"/folder/"文字列です。 ${0%.gz}式は、文字列(パス)の後ろから.gzの最短一致を削除します。

そして、{}シーケンスは、次のgzippedファイルのパスに置き換えられます。最初の引数($0)としてbashコマンドに渡されます。

ソースディレクトリが現在のディレクトリの場合は、/source/dir/をドット(.)に置き換えます。

0

manで指定した-kオプションを使用するだけで簡単に使用できます。例えば

-k --keep 
     Keep (don't delete) input files during compression or decompression. 

コマンドを使用している場合

gunzip -k my_file.gz 

my_file.gzは、圧縮または解凍後に削除されることはありません。

+0

OPは圧縮されていないファイルを別のディレクトリに移動しようとしています –

+0

だから、gzipやgunzipの代わりにtarを使うことができます。 – Nic0

+0

tar zを使ってfile.gz -C/dest/path – Nic0

関連する問題