มีวิธีการกำหนดขนาดที่คลายบีบอัดของไฟล์. bz2 หรือไม่?


34

มีวิธีพิมพ์ขนาดแตกไฟล์บีบอัด. bz2 โดยไม่แตกไฟล์จริงหรือไม่?


ดังนั้นจึงไม่มีข้อมูลเมตาเกี่ยวกับไฟล์ต้นฉบับในเอาต์พุต bzip? > :(
endolith

ไม่ใช่ที่ฉันเคยเห็นการอ้างอิงถึง : /
ต้มตุ๋น quixote

คำตอบ:


36

ตามที่บันทึกไว้โดยผู้อื่น bzip2 ไม่ได้ให้ข้อมูลมากนัก แต่เทคนิคนี้ใช้งานได้ - คุณจะต้องคลายการบีบอัดไฟล์ แต่คุณไม่จำเป็นต้องเขียนข้อมูลที่คลายการบีบอัดลงในดิสก์ซึ่งอาจเป็นทางออกที่ "ดีพอ" สำหรับคุณ:

$ ls -l foo.bz2
-rw-r--r-- 1 ~quack ~quack 2364418 Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c         # bzcat decompresses to stdout, wc -c counts bytes
2928640                         # number of bytes of decompressed data

คุณสามารถไพพ์เอาต์พุตนั้นเป็นอย่างอื่นเพื่อให้ฟอร์มที่มนุษย์อ่านได้:

$ ls -lh foo.bz2
-rw-r--r-- 1 quack quack 2.3M Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c | perl -lne 'printf("%.2fM\n", $_/1024/1024)'
2.79M

9
นั่นใช้เวลาเพียงห้านาทีในการคำนวณ CPU 100%
endolith

2
เท่านั้น? และมันจะเติมดิสก์? ฉันมี tarball บีบอัดของลินุกซ์ติดตั้งเก่าที่เพียง 407meg ยังเอาเซิร์ฟเวอร์โบราณที่น่าสงสารของฉัน 30-45 นาทีเพื่อแยก ที่รวมถึงการเขียนลงดิสก์ดังนั้นฉันจะต้องเรียกใช้สคริปต์ที่เวลา กลับไปที่ยาในครึ่งชั่วโมง ... :)
ต้มตุ๋น quixote

ฉันเลือกไฟล์ที่เล็กที่สุดสำหรับการทดสอบครั้งแรกแน่นอน บีบอัด 140 MB -> 3 GB ไม่บีบอัด ไฟล์ที่มีขนาดใหญ่กว่าถูกบีบอัด 5 GB ...
endolith

หึ .. lemme รู้วิธีใหญ่ 5GBs เปิดออกเพื่อจะ ... และวิธีการที่จะใช้เวลานานที่จะคิดออกผ่าน XD นี้
นักต้มตุ๋น Quixote

-3

หากต้องการอ่านไฟล์ข้อความนามสกุล. bz โดยไม่ต้องคลายซิป

bzcat dbtax_ext_en.ttl.bz2 |zless

1
bzcat และ zless ไม่ทำงานร่วมกันเช่นนี้ ใช้ "bzcat file.bz2 | less" หรือ "bzless file.bz2" หรือหากคุณมีไฟล์ gzipped "zcat file.gz | น้อย" หรือ "zless file.gz" ในความเป็นจริง man page ของ zless notes ว่า "Zless ไม่ทำงานกับข้อมูลที่ถูกบีบอัดซึ่งถูกไพพ์ไปยังมันผ่านอินพุตมาตรฐาน; มันต้องการไฟล์อินพุตที่ระบุว่าเป็นอาร์กิวเมนต์"
Nick Russo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.