Có một số cách để tìm kiếm thông qua các tập tin văn bản nén trên hệ thống Linux mà không cần phải giải nén chúng trước. Tùy thuộc vào định dạng của tập tin, bạn có thể chọn xem toàn bộ tập tin, trích xuất văn bản cụ thể, điều hướng qua nội dung tập tin tìm kiếm nội dung quan tâm và đôi khi thậm chí chỉnh sửa nội dung.
Đầu tiên, để cho bạn thấy cách nó hoạt động, tôi đã nén tập tin từ trên một trong các hệ thống Linux của tôi (/usr/share/dict/words) sử dụng các lệnh sau:
$ cp /usr/share/dict/words .
$ 7z a words.7z words
$ bzip2 -k words
$ gzip -k words
$ xz -k words
$ zip words.zip words
Các tùy chọn -k được sử dụng với các lệnh bzip2, gzip và xz giữ cho các lệnh này không loại bỏ tệp gốc, mà chúng sẽ mặc định. Các tệp kết quả sau đó trông như thế này:
$ ls -l
total 9164
-rw-r--r--. 1 shs shs 4953598 Oct 27 16:11 words
-rw-r--r--. 1 shs shs 1230545 Oct 27 16:14 words.7z
-rw-r--r--. 1 shs shs 1712421 Oct 27 16:11 words.bz2
-rw-r--r--. 1 shs shs 1476067 Oct 27 16:11 words.gz
-rw-r--r--. 1 shs shs 1230236 Oct 27 16:11 words.xz
-rw-r--r--. 1 shs shs 1476203 Oct 28 12:42 words.zip
Để xem toàn bộ nội dung của một tập tin nén trong khi để lại tập tin nén còn nguyên vẹn, bạn có thể sử dụng bất kỳ lệnh nào sau đây:
Đối với 7z: 7z x -- words.7z
Với bz2: bzcat words.bz2
Bản mẫu: zcat words.gz
Viết tắt của xz: xzcat words.xz
Ngôn ngữ zip: zcat words.zip
Ví dụ:
$ bzcat words.bz2 | head -5 $ 7z x -so words.7z | head -5
1080 1080
10-point 10-point
10th 10th
11-point 11-point
12-point 12-point
Ví dụ:
Bạn cũng có thể truyền dẫn đầu ra ra lệnh như nhiều hơn hoặc grep, hoặc chỉ cần xem nó di chuyển nhanh xuống màn hình của bạn.
$ 7z x -so words.7z | grep overclever
overclever
overcleverly
overcleverness
Bạn có thể duyệt một số loại tệp nén (bz2, gz và xz) bằng cách sử dụng lệnh less.
$ less words.bz2 $ less words.gz $ less words.xz
1080 1080 1080
10-point 10-point 10-point
10th 10th 10th
11-point 11-point 11-point
12-point 12-point 12-point
... ... ...
Lệnh 7z cho phép bạn xem các tệp có trong kho lưu trữ, nhưng tìm kiếm nội dung của chúng đòi hỏi tùy chọn trích xuất (-x). Tuy nhiên, một lệnh như thế dưới đây để lại tệp nén còn nguyên vẹn nhưng cũng trích xuất nội dung trong quá trình. Tùy chọn -so cho phép lệnh ghi dữ liệu để chuẩn ra.
$ 7z x -so words.7z | grep clever | column
clever cleverest cleverly overcleverly uncleverness
cleverality clever-handed cleverness overcleverness
clever-clever cleverish clevernesses unclever
cleverer cleverishly overclever uncleverly
Dường như không có một lệnh giống như grep cho các tệp 7z, nhưng các lệnh như thế này hoạt động rất tốt.
Để tìm kiếm văn bản cụ thể trong các tệp nén, bạn có thể sử dụng các lệnh như sau:
$ bzgrep overclever words.bz2
$ zgrep overclever words.gz
$ xzgrep overclever words.xz
$ zipgrep overclever words.zip
Đối với bất kỳ lệnh nào trong số này, bạn sẽ thấy những từ này mà chúng lấy từ các tệp từ nén:
overclever
overcleverly
overcleverness
Sử dụng vi hoặc vim, bạn thực sự có thể chỉnh sửa một số tệp nén (tệp bz2, gz và xz) để thêm, thay đổi hoặc loại bỏ nội dung. Các tệp sẽ vẫn được nén trên đĩa của bạn, nhưng bạn sẽ có thể nhận thấy sự thay đổi kích thước.
$ xzcat words.xz | tail -3
Zz
zZt
ZZZ
$ vi words.xz
$ xzcat words.xz | tail -3
zZt
ZZZ
I added this line!
Với tất cả các cách mà bạn có thể duyệt và chọn nội dung từ các tệp nén, đây có thể là thời điểm tốt để thực hiện "vượt quá giới hạn" của bạn và xem các phương pháp được mô tả trong bài đăng này có thể hữu ích như thế nào.
Tham gia cộng đồng Network World trên Facebook và LinkedIn để bình luận về các chủ đề được quan tâm hàng đầu.