Câu hỏi Làm thế nào tôi có thể xem nội dung của tập tin tar.gz mà không cần trích xuất từ ​​dòng lệnh?


Tôi muốn xem nội dung (danh sách các tệp và thư mục) của một tệp lưu trữ, ví dụ: tar.gz tập tin mà không cần giải nén nó.

Có phương pháp nào để làm điều đó không?


197
2017-12-19 05:46


gốc


Thử man tar  ... - Reinier Post


Các câu trả lời:


Chạy lệnh dưới đây trong terminal để xem nội dung của tập tin tar.gz mà không cần giải nén nó:

tar -tf filename.tar.gz

screenshot of listing compressed tarball files in the terminal


210
2017-12-19 05:47



tất cả các ví dụ này để xem bên trong tệp nén cũng hoạt động trên các loại định dạng khác nữa. như zip, rar, tar, v.v ...? - Ciasto piekarz
tar -tvf xxx.tgz điều này cũng sẽ hiển thị các thuộc tính chi tiết của các tệp. - Eric Wang
ống nó để tree để xem một cái nhìn cây tar -tf filename.tar.gz | tree - blockloop
Để sử dụng zip / rar unzip -l / unrar -l - RoVo


Bạn cũng có thể sử dụng vim

vim filename.tar.gz

96
2017-12-19 05:49



Điều này thật tuyệt. Bạn cũng có thể xem nội dung của các tập tin! - Nico
Hoặc sử dụng trình chỉnh sửa Ex: ex +%p foo.tar.gz. - kenorb
@Nico Làm thế nào để bạn sử dụng điều này để xem nội dung của một tệp trong tgz? - 1252748
Khi bạn mở tập tin với vim (vim file.tar.gz) nó nói "Chọn một tập tin với con trỏ và nhấn ENTER". Bạn làm điều đó, di chuyển con trỏ qua một tập tin và nhấn ENTER. - Nico
Với lưu trữ lớn, bạn chỉ cần kiên nhẫn. Nó có thể rất dài để tải cấu trúc thư mục. :-) - Hugo H


less cũng có thể mở gz-không nén và không nén tar lưu trữ. Nó mang lại cho bạn một đáng yêu ls -l phong cách đầu ra quá:

$ less ~/src/compiz_0.9.7.8-0ubuntu1.6.debian.tar.gz
drwxrwxr-x 0/0               0 2012-09-21 11:41 debian/
drwxrwxr-x 0/0               0 2012-08-09 13:32 debian/source/
-rw-rw-r-- 0/0              12 2012-08-09 13:32 debian/source/format
-rw-rw-r-- 0/0              25 2012-08-09 13:32 debian/libdecoration0-dev.docs
-rw-rw-r-- 0/0              25 2012-08-09 13:32 debian/compiz-dev.docs
-rw-rw-r-- 0/0             347 2012-08-09 13:32 debian/compiz-core.install
-rw-rw-r-- 0/0             125 2012-08-09 13:32 debian/libdecoration0-dev.install
...

Và bởi vì nó less, bạn có thể cuộn qua nó, tìm kiếm nó, vv Tuy nhiên nó thất bại thảm hại với các thuật toán nén khác (theo kinh nghiệm của tôi).


36
2017-12-19 14:00



Không làm việc cho tôi. Hiển thị dưới dạng tệp nhị phân. - JeromeJ
Bạn chắc chắn bạn không có alias với các tùy chọn đặc biệt cho less mà bạn không hiển thị ở đây? Tôi chỉ cố gắng để xem, nhưng nó không hoạt động. Tôi không có bất kỳ bí danh nào được thiết lập cho less. - code_dredd


Bạn có thể sử dụng lệnh z: zcat, zless, zgrep.

Để xem nội dung tập tin sử dụng:

zcat file.gz   

Để grep một cái gì đó sử dụng:

zgrep test file.gz   

Để kiểm tra sự khác biệt giữa các tệp sử dụng:

zdiff file1.gz file2.gz

Đây chỉ là một vài ví dụ, có nhiều hơn nữa.


32
2018-03-30 15:53





tar'S -t cờ sẽ liệt kê nội dung cho bạn. Thêm nó vào các lá cờ khác của bạn (để -tvfz cho một tar.gz, -tvfj cho một tar.bz2, vv) và bạn có thể duyệt mà không cần giải nén. Từ đó bạn có thể trích xuất các tệp đơn khá dễ dàng

tar -xvfz mybackup.tar.gz path/to/file

Vấn đề lớn với tar Là nhớ tất cả cờ khác. Vì vậy, tôi thường dựa vào 7z (của p7zip-full gói) để làm tất cả lưu trữ của tôi. Tôi sẽ không tuyên bố nó là hoàn toàn tốt hơn nhưng nó hỗ trợ hầu như tất cả mọi thứ (mà không cần phải xác định loại nén) và các đối số là hợp lý.

7z l archive.ext
7z e archive.ext path/to/file

Nó chắc chắn ít có khả năng hơn, nhưng bạn không nhu cầu trang người dùng để sử dụng nó.

Ngoài ra còn có Midnight Commander (mc). Đây là một badass toàn diện cho quản lý tập tin dựa trên đầu cuối dựa trên thiết bị đầu cuối và với một số thử nghiệm ánh sáng, nó chỉ cho phép bạn duyệt cả hai .tar.gz và .7z lưu trữ. Tôi không chắc có bao nhiêu người khác nó hỗ trợ.


8
2018-03-30 15:50



t-ar từng là và tên thực sự là viết tắt của băng dính archiver, mà hét lên tuần tự và trong nhiều trường hợp một PIA. Đặc biệt là không thể tránh khỏi gấp đôi tar + gz điều này thật tàn nhẫn. Đồng thời chuyển sang 7zip ngay bây giờ. - Frank Nocke


Vâng, điều đó phụ thuộc vào tập tin. Hầu hết các chương trình nén (de) đều có một cờ liệt kê các nội dung của một kho lưu trữ.

  1. tar/tar.gz/tgz/tar.xz/tar.bz2/tbz các tập tin

    $ tar tf foo.tgz 
    dir1/
    dir1/subdir1/
    dir1/subdir1/file
    dir1/subdir2/
    dir1/subdir2/file
    dir2/
    
  2. zip các tập tin

    $ zip -sf foo.zip 
    Archive contains:
      dir1/
      dir2/
      dir1/subdir1/
      dir1/subdir1/file
      dir1/subdir2/
      dir1/subdir2/file
    Total 6 entries (0 bytes)
    
  3. 7zip các tập tin

    $ 7z l foo.7z 
    
    7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
    p7zip Version 9.20 (locale=en_US.utf8,Utf16=on,HugeFiles=on,4 CPUs)
    
    Listing archive: foo.7z
    
    --
    Path = foo.7z
    Type = 7z
    Solid = -
    Blocks = 0
    Physical Size = 168
    Headers Size = 168
    
       Date      Time    Attr         Size   Compressed  Name
    ------------------- ----- ------------ ------------  ------------------------
    2015-03-30 19:00:07 ....A            0            0  dir1/subdir1/file
    2015-03-30 19:00:07 ....A            0            0  dir1/subdir2/file
    2015-03-30 19:07:32 D....            0            0  dir2
    2015-03-30 19:00:07 D....            0            0  dir1/subdir2
    2015-03-30 19:00:07 D....            0            0  dir1/subdir1
    2015-03-30 19:00:06 D....            0            0  dir1
    ------------------- ----- ------------ ------------  ------------------------
                                         0            0  2 files, 4 folders
    
  4. rar các tập tin

     $ rar v foo.rar 
    
    RAR 4.20   Copyright (c) 1993-2012 Alexander Roshal   9 Jun 2012
    Trial version             Type RAR -? for help
    
    Archive foo.rar
    
    Pathname/Comment
                      Size   Packed Ratio  Date   Time     Attr      CRC   Meth Ver
    -------------------------------------------------------------------------------
     dir1/subdir1/file
                         0        8   0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
     dir1/subdir2/file
                         0        8   0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
     dir1/subdir1
                         0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
     dir1/subdir2
                         0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
     dir1
                         0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
     dir2
                         0        0   0% 30-03-15 19:07 drwxr-xr-x 00000000 m0  2.0
    -------------------------------------------------------------------------------
        6                0       16   0%
    

Đó là hầu hết các định dạng lưu trữ phổ biến hơn. Với tất cả điều này trong tâm trí, bạn có thể viết một kịch bản nhỏ sử dụng lệnh thích hợp tùy thuộc vào phần mở rộng của tập tin bạn cung cấp cho nó:

#!/usr/bin/env bash

for file in "$@"
do
    printf "\n-----\nArchive '%s'\n-----\n" "$file"
    ## Get the file's extension
    ext=${file##*.}
    ## Special case for compressed tar files. They sometimes
    ## have extensions like tar.bz2 or tar.gz etc.
    [[ "$(basename "$file" ."$ext")" =~ \.tar$ ]] && ext="tgz"

    case $ext in
        7z)
            type 7z >/dev/null 2>&1 && 7z l "$file" || 
            echo "ERROR: no 7z program installed"
            ;;
        tar|tbz|tgz)
            type tar >/dev/null 2>&1 && tar tf "$file"|| 
            echo "ERROR: no tar program installed"
            ;;
        rar)
            type rar >/dev/null 2>&1 && rar v "$file"|| 
            echo "ERROR: no rar program installed"
            ;;
        zip)
            type zip >/dev/null 2>&1 && zip -sf "$file"|| 
            echo "ERROR: no zip program installed"
            ;;
        *)
            echo "Unknown extension: '$ext', skipping..."
            ;;
    esac
done

Lưu tập lệnh đó vào PATH và làm cho nó thực thi được. Sau đó, bạn có thể liệt kê nội dung của bất kỳ tệp lưu trữ nào:

$ list_archive.sh foo.rar foo.tar.bz foo.tar.gz foo.tbz foo.zip

-----
Archive 'foo.rar'
-----

RAR 4.20   Copyright (c) 1993-2012 Alexander Roshal   9 Jun 2012
Trial version             Type RAR -? for help

Archive foo.rar

Pathname/Comment
                  Size   Packed Ratio  Date   Time     Attr      CRC   Meth Ver
-------------------------------------------------------------------------------
 dir1/subdir1/file
                     0        8   0% 30-03-15 19:00 -rw-r--r-- 00000000 m3b 2.9
 dir1/file
                     0        8   0% 30-03-15 19:29 -rw-r--r-- 00000000 m3b 2.9
 dir1/subdir1
                     0        0   0% 30-03-15 19:00 drwxr-xr-x 00000000 m0  2.0
 dir1
                     0        0   0% 30-03-15 19:29 drwxr-xr-x 00000000 m0  2.0
 dir2
                     0        0   0% 30-03-15 19:07 drwxr-xr-x 00000000 m0  2.0
-------------------------------------------------------------------------------
    5                0       16   0%


-----
Archive 'foo.tar.bz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/

-----
Archive 'foo.tar.gz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/

-----
Archive 'foo.tbz'
-----
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/file
dir2/

-----
Archive 'foo.zip'
-----
Archive contains:
  dir1/
  dir1/subdir1/
  dir1/subdir1/file
  dir1/file
  dir2/
Total 5 entries (0 bytes)

Và vì ai đó đã đề cập rằng trình soạn thảo nhỏ hơn, một cách tự nhiên, các emacs cũng có thể làm điều này:

emacs showing an archive's contents


8
2018-03-30 16:45





Tại sao không sử dụng vim để duyệt lưu trữ của bạn và mở tệp (ít nhất là các tệp văn bản giống như):

vim archive.tar.gz

enter image description here

Nhấn các phím mũi tên để cuộn và Đi vào để mở một tập tin.


6
2018-03-30 15:43





Midnight Commander (mc) cũng có một trình xem tập tin nén tốt, mặc dù tôi xem xét điều này một chút gian lận kể từ mc  một trình quản lý tệp, mặc dù là trình quản lý tệp.

Ngoài ra, nếu tất cả các bạn muốn là để xem những gì bên trong kho lưu trữ nén, bạn có thể tìm hiểu lệnh "xem" cho mỗi máy nén. tar tzvf sẽ hiển thị cho bạn nội dung của tệp tar, unzip -l sẽ làm điều đó cho một tệp zip, v.v.


4
2018-03-30 15:52





Sử dụng view filename.tar.gz  cũng sẽ hoạt động. nhiều trong cùng một cách vim nào, nhưng không có quyền ghi.


2
2018-01-22 13:44