Quiero ver el contenido (lista de archivos y carpetas) de un archivo, por ejemplo, un tar.gzarchivo sin extraerlo .
¿Hay algún método para hacer eso?
Quiero ver el contenido (lista de archivos y carpetas) de un archivo, por ejemplo, un tar.gzarchivo sin extraerlo .
¿Hay algún método para hacer eso?
Respuestas:
Ejecute el siguiente comando en la terminal para ver el contenido de un archivo tar.gz sin extraerlo:
tar -tf filename.tar.gz

-t, --list
Lista el contenido de un archivo. Los argumentos son opcionales. Cuando se proporcionan, especifican los nombres de los miembros a enumerar.
tar -tvf xxx.tgzesto también mostraría propiedades detalladas de los archivos.
treea ver una vista de árboltar -tf filename.tar.gz | tree
unzip -l/unrar -l
También puedes usar vim
vim filename.tar.gz
ex +%p foo.tar.gz.
vim file.tar.gz) dice "Seleccione un archivo con el cursor y presione ENTER". Simplemente haga eso, mueva el cursor sobre un archivo y presione ENTER.
lessTambién puede abrir archivos gzcomprimidos y sin comprimir tar. También te da una ls -lsalida de estilo encantadora :
$ 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
...
Y debido a que es así less, puede desplazarse por él, buscarlo, etc. Sin embargo, falla miserablemente con otros algoritmos de compresión (en mi experiencia).
aliasopciones especiales para lesseso que no estás mostrando aquí? Solo intenté ver eso, pero no funcionó. No tengo ningún alias configurado less.
tarLa -tbandera de la lista enumerará los contenidos por usted. Agregue eso a sus otras banderas (así que -tvfzpara a tar.gz, -tvfjpara a tar.bz2, etc.) y puede navegar sin extraer. Desde allí, puede extraer archivos individuales con bastante facilidad
tar -xvfz mybackup.tar.gz path/to/file
El gran problema con tares recordar todas las otras banderas . Por lo tanto, generalmente confío en 7z(del p7zip-fullpaquete) para hacer todo mi archivo. No afirmaré que es completamente mejor, pero admite casi todo (sin tener que especificar el tipo de compresión) y los argumentos son lógicos.
7z l archive.ext
7z e archive.ext path/to/file
Ciertamente es menos capaz, pero no necesita la página de manual para usarlo.
También hay Midnight Commander ( mc). Este es un rudo completo para la gestión de archivos basada en terminales casi gráficas y con algunas pruebas ligeras simplemente te permite navegar tanto en archivos .tar.gzcomo en .7zarchivos. No estoy seguro de cuántos otros soporta.
Bueno, eso depende del archivo. La mayoría de los programas de (des) compresión tienen una bandera que enumera el contenido de un archivo.
tar/ tar.gz/ tgz/ tar.xz/ tar.bz2/ tbzarchivos
$ tar tf foo.tgz
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
dir2/
zip archivos
$ zip -sf foo.zip
Archive contains:
dir1/
dir2/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
Total 6 entries (0 bytes)
7zip archivos
$ 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 archivos
$ 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%
Esa es la mayoría de los formatos de archivo más populares. Con todo esto en mente, podrías escribir un pequeño script que use el comando apropiado dependiendo de la extensión del archivo que le des:
#!/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
Guarde ese script en su PATHarchivo y hágalo ejecutable. Luego puede enumerar el contenido de cualquier archivo:
$ 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)
Y como alguien mencionó a ese editor menor, naturalmente, emacs también puede hacer esto:

¿Por qué no utilizar vimpara explorar su archivo y abrir archivos (al menos archivos de texto):
vim archive.tar.gz

Presione las teclas de flecha para desplazarse y Enterabrir un archivo.
Midnight Commander ( mc) también tiene un buen visor de archivos comprimido, aunque considero que esto es un poco tramposo ya que mc es un administrador de archivos, aunque está basado en texto.
Además, si todo lo que quiere es ver lo que hay dentro de los archivos comprimidos, puede aprender el comando "ver" para cada compresor. tar tzvfle mostrará el contenido de un archivo tar, unzip -llo hará para un archivo zip, y así sucesivamente.
lesspipees un script de shell instalado de manera predeterminada como parte del lesspaquete que puede enumerar el contenido de un tar.gzarchivo, así como una gama de otros formatos de archivo de archivo comunes.
$ 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
Es invocado por el lesscomando ( vea la respuesta de Oli ) como un preprocesador de entrada si la $LESSOPENvariable de entorno está configurada adecuadamente.
Si se siente aventurero, eche un vi /usr/bin/lesspipevistazo para ver qué comandos usa. Para los archivos que coinciden con la tar.gzextensión, podemos ver que se usa tar tzvfdebajo del capó junto con la --force-localopción de deshabilitar una característica oscura tarque de lo contrario confundiría los dos puntos en el nombre de archivo con un comando para usar una unidad de cinta remota:
*.tar.gz|*.tgz|*.tar.z|*.tar.dz)
tar tzvf "$1" --force-local
Tenga en cuenta que debido a que está diseñado principalmente como un preprocesador para less, no generará nada si no reconoce el tipo de archivo. Noté que algunos .tar.gzarchivos que descargué no funcionarían porque en realidad no usaban compresión gzip a pesar del nombre del archivo.
Si desea ver el contenido de un archivo específico dentro de un archivo sin extraer el archivo o escribir en el disco de ninguna manera, use el indicador -O (mayúscula o) para escribir en stdout en lugar de un archivo.
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
Asegúrese de que la O aparezca antes de f o intentará analizar la O como un nombre de archivo.