Saya ingin melihat konten (daftar file dan folder) dari suatu arsip, misalnya tar.gzfile tanpa mengekstraknya .
Apakah ada metode untuk melakukan itu?
Saya ingin melihat konten (daftar file dan folder) dari suatu arsip, misalnya tar.gzfile tanpa mengekstraknya .
Apakah ada metode untuk melakukan itu?
Jawaban:
Jalankan perintah di bawah ini di terminal untuk melihat konten file tar.gz tanpa mengekstraknya:
tar -tf filename.tar.gz

-t, --list Menampilkan
daftar arsip. Argumen bersifat opsional. Ketika diberikan, mereka menentukan nama-nama anggota untuk dicantumkan.
tar -tvf xxx.tgzini juga akan menunjukkan properti detail file.
treemelihat tampilan pohontar -tf filename.tar.gz | tree
unzip -l/unrar -l
Anda juga dapat menggunakan vim
vim filename.tar.gz
ex +%p foo.tar.gz.
vim file.tar.gz) dikatakan "Pilih file dengan kursor dan tekan ENTER". Anda lakukan itu, gerakkan kursor di atas file dan tekan ENTER.
lessjuga dapat membuka arsip yang gzdikompresi dan tidak dikompresi tar. Ini memberi Anda ls -loutput gaya yang indah juga:
$ 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
...
Dan karena itu less, Anda dapat menggulirnya, mencarinya, dll. Namun gagal dengan algoritma kompresi lainnya (menurut pengalaman saya).
aliasopsi khusus lessyang tidak Anda tampilkan di sini? Saya hanya mencoba melihatnya, tetapi tidak berhasil. Saya tidak memiliki pengaturan alias untuk less.
tar's -tbendera akan daftar isi untuk Anda. Tambahkan itu ke flag Anda yang lain (jadi -tvfzuntuk a tar.gz, -tvfjuntuk a tar.bz2, dll) dan Anda dapat menjelajah tanpa mengekstraksi. Dari sana Anda dapat mengekstrak file tunggal dengan cukup mudah
tar -xvfz mybackup.tar.gz path/to/file
Masalah besar dengan taryang mengingat semua bendera lainnya . Jadi saya biasanya mengandalkan 7z( p7zip-fullpaket) untuk melakukan semua pengarsipan saya. Saya tidak akan mengklaim itu sepenuhnya lebih baik tetapi mendukung hampir semua (tanpa harus menentukan jenis kompresi) dan argumennya logis.
7z l archive.ext
7z e archive.ext path/to/file
Ini tentu saja kurang mampu, tetapi Anda tidak perlu halaman manual untuk menggunakannya.
Ada juga Midnight Commander ( mc). Ini adalah badass all-around untuk manajemen file berbasis terminal kuasi-grafis dan dengan beberapa pengujian ringan hanya membiarkan Anda menelusuri keduanya .tar.gzdan .7zarsip. Saya tidak yakin berapa banyak yang didukung.
Yah, itu tergantung pada file. Sebagian besar (de) program kompresi memiliki bendera yang mencantumkan konten arsip.
tar/ tar.gz/ tgz/ tar.xz/ tar.bz2/ tbzfile
$ tar tf foo.tgz
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
dir2/
zip file
$ zip -sf foo.zip
Archive contains:
dir1/
dir2/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
Total 6 entries (0 bytes)
7zip file
$ 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
rar file
$ 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%
Itu sebagian besar format arsip yang lebih populer. Dengan semua ini dalam pikiran, Anda bisa menulis skrip kecil yang menggunakan perintah yang sesuai tergantung pada ekstensi file yang Anda berikan padanya:
#!/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
Simpan skrip itu di Anda PATHdan buat itu bisa dieksekusi. Anda kemudian dapat mencantumkan konten arsip apa pun:
$ 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)
Dan karena seseorang menyebutkan bahwa editor yang lebih rendah, emacs juga dapat melakukan ini:

Mengapa tidak digunakan vimuntuk menelusuri arsip Anda dan membuka file (setidaknya file seperti teks):
vim archive.tar.gz

Tekan tombol panah untuk menggulir dan Entermembuka file.
Midnight Commander ( mc) juga memiliki penampil file terkompresi yang baik, meskipun saya menganggap ini sedikit curang karena mc adalah manajer file, meskipun berbasis teks.
Juga, jika yang Anda inginkan adalah melihat apa yang ada di dalam arsip terkompresi, Anda dapat mempelajari perintah "view" untuk setiap kompresor. tar tzvfakan menunjukkan kepada Anda konten file tar, unzip -lakan melakukannya untuk file zip, dan sebagainya.
lesspipeadalah skrip shell yang diinstal secara default sebagai bagian dari lesspaket yang dapat mencantumkan isi tar.gzarsip, serta serangkaian format file arsip umum lainnya.
$ lesspipe example.tar.gz
drwxrwxr-x ubuntu/ubuntu 0 2018-11-16 05:32 example/
-rw-rw-r-- ubuntu/ubuntu 7 2018-11-16 05:32 example/ask.txt
-rw-rw-r-- ubuntu/ubuntu 7 2018-11-16 05:32 example/ubuntu.txt
Itu disebut oleh lessperintah ( lihat jawaban Oli ) sebagai preprocessor input jika $LESSOPENvariabel lingkungan diatur dengan tepat.
Jika merasa ingin bertualang, ambil puncaknya vi /usr/bin/lesspipeuntuk melihat perintah apa yang digunakan. Untuk file yang cocok dengan tar.gzekstensi, kita dapat melihat bahwa ia menggunakan di tar tzvfbawah tenda bersama dengan --force-localopsi untuk menonaktifkan fitur yang tidak jelas taryang jika tidak akan membingungkan titik dua dalam nama file dengan perintah untuk menggunakan tape drive jarak jauh:
*.tar.gz|*.tgz|*.tar.z|*.tar.dz)
tar tzvf "$1" --force-local
Perhatikan bahwa karena dirancang terutama sebagai preprosesor untuk less, itu tidak akan menghasilkan apa pun jika tidak mengenali tipe file. Saya perhatikan bahwa beberapa .tar.gzfile yang saya unduh tidak akan berfungsi karena mereka tidak benar-benar menggunakan kompresi gzip walaupun ada nama file.
Jika Anda ingin melihat konten file tertentu dalam arsip tanpa mengekstraksi arsip atau menulis ke disk dengan cara apa pun, gunakan bendera -O (huruf kapital) untuk menulis ke stdout alih-alih file.
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
Pastikan O datang sebelum f atau ia akan mencoba mengurai O sebagai nama file.