別の宛先ディレクトリにgunzipするにはどうすればよいですか?


80

現在のディレクトリ以外の宛先ディレクトリにgunzipするにはどうすればよいですか?

これは機能しませんでした:

gunzip *.gz /putthemhere/

回答:


104

掲載しgunzip、標準出力に出力すると、そのディレクトリ内のファイルにリダイレクトします。

gunzip -c file.gz > /THERE/file

zcatはのショートカットですgunzip -c

複数のファイルをgunzipですべてのファイルを反復処理する場合:

for f in *.gz; do
  STEM=$(basename "${f}" .gz)
  gunzip -c "${f}" > /THERE/"${STEM}"
done

(ここでbasenameは、拡張子のないファイル名の一部を取得するために使用されます)


3
ファイルを作成しますが、ファイルの所有権、アクセス許可などは保持しません。これは、正確な状況に応じて良い場合も悪い場合もあります。
クリスジョンソン14年

2

あなたは、単一のファイルを抽出する必要がある場合ルート所有のディレクトリに書き込み、その後、使用sudo dd

zcat filename.conf.gz | sudo tee /etc/filename.conf >/dev/null

ファイルがリモートソース(つまり、ssh、curl httpsなど)から来ている場合、次のようにできます。

ssh remoteserver cat filename.conf.gz | zcat | sudo tee /etc/filename.conf >/dev/null

(これらの例は、ディレクトリ内のすべてのgzip圧縮ファイルである* .gzの例とは異なり、単一のファイルに対してのみ機能することに注意してください。)


ルート権限で書くsudo tee $filename >/dev/null場合、を使用するよりも少し慣用的ですdd
-dcoles

1

>で試して、目的の場所に結果をリダイレクトできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.