bagaimana cara mengekstrak banyak file gzip di direktori dan subdirektori?

10

Saya telah mencoba keduanya gzipdan gunzipmemerintahkan tetapi saya dapat keduanya

gunzip *.gz 
gzip: invalid option -- 'Y' 

gunzip -S-1800-01-01-000000-g01.h5.gz  
gzip: compressed data not read
 from a terminal. Use -f to force decompression. For help, type: gzip -h

Jika saya mencoba -fopsi itu butuh waktu yang sangat lama untuk bekerja pada satu file tunggal dan perintah tidak berhasil dijalankan. Apakah saya melewatkan sesuatu?

Herman Toothrot
sumber
1
Apakah direktori tersebut berisi file .gz yang namanya dimulai dengan tanda hubung, seperti -Y.something.gz? Jika demikian, Anda mungkin perlu menggunakan --bendera Gnu untuk memastikan bahwa mereka diperlakukan sebagai nama file daripada opsi yaitugunzip -- *.gz
steeldriver
@steeldriver ya saya punya beberapa file dimulai dengan -
Herman Toothrot
yang menyebabkan setidaknya satu dari dua masalah.
Herman Toothrot 3-15

Jawaban:

16

Anda dapat menggunakan perintah di bawah ini.

Pergi ke direktori tempat .gzfile Anda dan jalankan perintah:

for f in *.gz ; do gunzip -c "$f" > /home/$USER/"${f%.*}" ; done

Ini akan mengekstrak semua file dengan nama asli dan menyimpannya ke direktori home user saat ini ( /home/username). Anda dapat mengubahnya ke tempat lain.

EDIT:

gunzip *.gz

Perintah ini juga akan berfungsi. Tapi, secara default, ini menggantikan file asli.

pl_rock
sumber
Sudahkah Anda membaca apa yang saya tulis dalam pertanyaan saya? gunzip * .gz tidak berfungsi untuk saya. Tetapi untuk loop bekerja, saya bingung.
Herman Toothrot 3-15
tetapi itu bekerja untuk saya dan orang lain juga mengapa menunjukkan `opsi tidak valid - 'Y'`. Saya pikir format file Anda tidak ok atau Anda kehilangan sesuatu dalam perintah.
pl_rock
4

Opsi # 1 : unzip banyak file menggunakan kutipan tunggal (versi pendek)

gunzip '*.gz'

Perhatikan bahwa *.gzkata diletakkan di antara dua kutipan tunggal, sehingga shell tidak akan mengenalinya sebagai karakter wild card.

Opsi # 2 : unzip banyak file menggunakan shell for loop (versi panjang)

for g in *.gz; do gunzip $g; done

Sumber

EDIT:

Saya baru saja mencoba:

gunzip -dk *.gz

dan itu berhasil.

-duntuk mendekompresi dan kmenyimpan file asli.

Bilal
sumber
sudahkah Anda memeriksa gunzip ‘*.gz’ perintah ini. saya tidak dapat menjalankan perintah ini. itu memberi kesalahan.
pl_rock
gunakan gunzip '*.gz'not gunzip ‘*.gz’ ( ' 'not `'` `)
Bilal
saya hanya menyalin paste perintah Anda dan itu memberi yang gzip: *.gz: No such file or directorybaru juga tidak berfungsi. sudahkah kamu mencoba
pl_rock
Tidak berfungsi gunzip '* .gz' gzip: * .gz: Tidak ada file atau direktori seperti itu
Herman Toothrot
Maaf, saya belum mencobanya! Saya sedang di WIndows Sekarang :(
Bilal
0

Pengguna Linux:

Gunakan perintah berikut untuk mengekstraksi jumlah minimum file .gz di direktori saat ini dan sub direktori

gunzip *.gz

Gunakan perintah berikut untuk mengekstraksi sejumlah file .gz di direktori saat ini dan sub direktori-nya

sudo find . -name "*.gz" | xargs gunzip
kmsvignesh
sumber