Bagaimana cara gunzip ke direktori tujuan yang berbeda?

80

Bagaimana cara gunzip ke direktori tujuan selain dari yang sekarang?

Ini tidak berhasil:

gunzip *.gz /putthemhere/
Scott Szretter
sumber

Jawaban:

104

Mintalah gunzipuntuk mengeluarkan ke keluaran standar dan mengarahkan ke file di direktori itu:

gunzip -c file.gz > /THERE/file

zcatadalah jalan pintas untuk gunzip -c.

Jika Anda ingin memindah-mindah banyak file, ulangi semua file:

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

(di sini basenamedigunakan untuk mendapatkan bagian dari nama file tanpa ekstensi)

Benjamin Bannier
sumber
3
Membuat file, tetapi tidak mempertahankan kepemilikan file, izin dll. Itu mungkin baik atau buruk tergantung pada situasi Anda yang sebenarnya.
Chris Johnson
2

Jika Anda perlu mengekstrak satu file dan menulis ke direktori yang dimiliki oleh root, maka gunakan sudo dd:

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

Jika file tersebut berasal dari sumber jarak jauh (yaitu, ssh, curl https, dll), Anda dapat melakukannya seperti ini:

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

(Perhatikan bahwa contoh-contoh ini hanya berfungsi untuk satu file, tidak seperti contoh * .gz, yang semuanya merupakan file yang di-gzip dalam direktori.)

Jamieson Becker
sumber
Untuk menulis dengan privilege root, sudo tee $filename >/dev/nullsedikit lebih idiomatis daripada menggunakan dd.
dcoles
1

Anda dapat mencoba dengan> untuk mengarahkan hasilnya ke tempat yang Anda inginkan.

jangelfdez
sumber