Bir arşivin içeriğini (dosya ve klasörlerin listesini), örneğin çıkartmadan bir tar.gz
dosyayı görmek istiyorum .
Bunu yapmak için herhangi bir yöntem var mı?
Bir arşivin içeriğini (dosya ve klasörlerin listesini), örneğin çıkartmadan bir tar.gz
dosyayı görmek istiyorum .
Bunu yapmak için herhangi bir yöntem var mı?
Yanıtlar:
Bir tar.gz dosyasının içeriğini ayıklamadan görmek için terminalde aşağıdaki komutu çalıştırın:
tar -tf filename.tar.gz
-t, --list
Bir arşivin içeriğini listeler . Argümanlar isteğe bağlıdır. Verildiğinde, listelenecek üyelerin adlarını belirtirler.
tar -tvf xxx.tgz
Bu aynı zamanda dosyaların detay özelliklerini gösterir.
tree
Bir ağaç görünümü görmek için borutar -tf filename.tar.gz | tree
unzip -l
/unrar -l
Ayrıca vim kullanabilirsiniz
vim filename.tar.gz
ex +%p foo.tar.gz
.
vim file.tar.gz
) ile de dosyasını açtığınızda "İmleci olan bir dosya seçin ve ENTER'a basın" yazıyor. Siz sadece bunu yapın, imleci bir dosyanın üzerine getirin ve ENTER'a basın.
less
ayrıca gz
sıkıştırılmamış ve sıkıştırılmamış tar
arşivler de açabilir . Size güzel bir ls -l
stil çıktısı verir :
$ 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
...
Ve çünkü less
, içinde gezinebilir, arayabilirsin, vb.
alias
için özel seçeneklerin olmadığından emin misin less
? Bunu görmeye çalıştım ama işe yaramadı. Kurulum için takma ad yok less
.
Sen z komutunu kullanabilirsiniz: zcat
, zless
, zgrep
.
Bir dosya içeriğini görüntülemek için kullanın:
zcat file.gz
Bir şey kullanmak grep için:
zgrep test file.gz
Dosya kullanımı arasındaki farkı kontrol etmek için:
zdiff file1.gz file2.gz
Bunlar sadece birkaç örnek, çok daha fazlası var.
tar
'in -t
bayrağı sizin için içeriği listeler. Bunu diğer bayraklarınıza ekleyin (yani -tvfz
a tar.gz
, -tvfj
a tar.bz2
vb. İçin) ve ayıklamadan göz atabilirsiniz. Oradan kolayca tek tek dosyaları ayıklayabilirsiniz
tar -xvfz mybackup.tar.gz path/to/file
İle büyük bir sorun tar
olduğunu tüm hatırlayarak diğer bayraklar . Bu yüzden genellikle tüm arşivlerimi yapmak için 7z
( p7zip-full
paketin) güvenirim . Tamamen daha iyi olduğunu iddia etmiyorum ama hemen hemen her şeyi destekliyor (sıkıştırma türünü belirtmek zorunda kalmadan) ve argümanlar mantıklı.
7z l archive.ext
7z e archive.ext path/to/file
Kesinlikle daha az yetenekli, ancak kullanmak için man sayfasına ihtiyacınız yok .
Ayrıca Midnight Komutanı ( mc
) da var. Bu yarı-grafik terminal tabanlı dosya yönetimi için bir all-around badass ve bazı hafif test ile sadece hem içine dolaşmalarını sağlar .tar.gz
ve .7z
arşivler. Kaç tane desteklediğinden emin değilim.
Bu dosyaya bağlı. Sıkıştırma programlarının çoğu, bir arşivin içeriğini listeleyen bir bayrağa sahiptir.
tar
/ tar.gz
/ tgz
/ tar.xz
/ tar.bz2
/ tbz
dosyalar
$ tar tf foo.tgz
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
dir2/
zip
Dosyalar
$ zip -sf foo.zip
Archive contains:
dir1/
dir2/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
Total 6 entries (0 bytes)
7zip
Dosyalar
$ 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
Dosyalar
$ 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%
En popüler arşiv biçimlerinin çoğu budur. Bütün bunlar göz önüne alındığında, verdiğiniz dosyanın uzantısına bağlı olarak uygun komutu kullanan küçük bir komut dosyası yazabilirsiniz:
#!/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
Bu betiği içine kaydedin PATH
ve çalıştırılabilir hale getirin. Ardından herhangi bir arşivin içeriğini listeleyebilirsiniz:
$ 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)
Ve birisi daha az editörden bahsettiğinden, tabii ki, emacs da bunu yapabilir:
Neden vim
arşivinize göz atıp dosyaları açmıyorsunuz (en azından metin benzeri dosyalar):
vim archive.tar.gz
EnterBir dosyayı kaydırmak ve açmak için ok tuşlarına basın .
Midnight Commander ( mc
bu mc beri hile biraz düşünün rağmen) ayrıca, iyi bir sıkıştırılmış dosya görüntüleyici olan olan bir dosya yöneticisi metin tabanlı bir de olsa.
Ayrıca, istediğiniz tek şey sıkıştırılmış arşivlerin içinde ne olduğunu görmekse, her kompresör için "view" komutunu öğrenebilirsiniz. tar tzvf
Bir tar dosyasının içeriğini gösterir, unzip -l
bir zip dosyası için yapar, vb.
lesspipe
less
bir tar.gz
arşivin içeriğini ve diğer genel arşiv dosyası biçimlerinin bir listesini listeleyebilen , paketin bir parçası olarak varsayılan olarak yüklenen bir kabuk betiğidir .
$ 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
Ortam değişkeni uygun bir şekilde ayarlanmışsa , less
komut tarafından ( bkz. Oli'nin cevabı ) giriş ön işlemcisi olarak adlandırılır $LESSOPEN
.
Maceracı hissediyorsanız, vi /usr/bin/lesspipe
hangi komutları kullandığını görmek için bir zirve yapın . Eşleşen dosyalar için tar.gz
uzantıyı, bunu kullandığını görebilirsiniz tar tzvf
birlikte kaputun altında --force-local
bir karanlık özelliği devre dışı bırakmak için seçenek tar
aksi şaşırtmak olacağını dosya içinde iki nokta üst üste uzak teyp sürücüsünü kullanmak için bir komutla:
*.tar.gz|*.tgz|*.tar.z|*.tar.dz)
tar tzvf "$1" --force-local
Öncelikle bir önişlemci olarak tasarlandığından less
, dosya türünü tanımıyorsa hiçbir şey çıkarmayacağını unutmayın. .tar.gz
İndirdiğim bazı dosyaların işe yaramayacağını fark ettim çünkü dosya adına rağmen gerçekte gzip sıkıştırması kullanmıyorlardı.
Bir arşiv içindeki belirli bir dosyanın içeriğini arşivi ayıklamadan veya herhangi bir şekilde diske yazmadan görüntülemek istiyorsanız, dosya yerine stdout'a yazmak için -O (büyük harf o) bayrağını kullanın.
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
O'nun f'den önce geldiğinden emin olun, yoksa O'yu dosya adı olarak ayrıştırmaya çalışır.