Saya ingin melihat konten (daftar file dan folder) dari suatu arsip, misalnya tar.gz
file tanpa mengekstraknya .
Apakah ada metode untuk melakukan itu?
Saya ingin melihat konten (daftar file dan folder) dari suatu arsip, misalnya tar.gz
file 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.tgz
ini juga akan menunjukkan properti detail file.
tree
melihat 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.
less
juga dapat membuka arsip yang gz
dikompresi dan tidak dikompresi tar
. Ini memberi Anda ls -l
output 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).
alias
opsi khusus less
yang tidak Anda tampilkan di sini? Saya hanya mencoba melihatnya, tetapi tidak berhasil. Saya tidak memiliki pengaturan alias untuk less
.
tar
's -t
bendera akan daftar isi untuk Anda. Tambahkan itu ke flag Anda yang lain (jadi -tvfz
untuk a tar.gz
, -tvfj
untuk 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 tar
yang mengingat semua bendera lainnya . Jadi saya biasanya mengandalkan 7z
( p7zip-full
paket) 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.gz
dan .7z
arsip. 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
/ tbz
file
$ 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 PATH
dan 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 vim
untuk 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 tzvf
akan menunjukkan kepada Anda konten file tar, unzip -l
akan melakukannya untuk file zip, dan sebagainya.
lesspipe
adalah skrip shell yang diinstal secara default sebagai bagian dari less
paket yang dapat mencantumkan isi tar.gz
arsip, 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 less
perintah ( lihat jawaban Oli ) sebagai preprocessor input jika $LESSOPEN
variabel lingkungan diatur dengan tepat.
Jika merasa ingin bertualang, ambil puncaknya vi /usr/bin/lesspipe
untuk melihat perintah apa yang digunakan. Untuk file yang cocok dengan tar.gz
ekstensi, kita dapat melihat bahwa ia menggunakan di tar tzvf
bawah tenda bersama dengan --force-local
opsi untuk menonaktifkan fitur yang tidak jelas tar
yang 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.gz
file 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.