Quiero ver el contenido (lista de archivos y carpetas) de un archivo, por ejemplo, un tar.gz
archivo 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.gz
archivo 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.tgz
esto también mostraría propiedades detalladas de los archivos.
tree
a 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.
less
También puede abrir archivos gz
comprimidos y sin comprimir tar
. También te da una ls -l
salida 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).
alias
opciones especiales para less
eso que no estás mostrando aquí? Solo intenté ver eso, pero no funcionó. No tengo ningún alias configurado less
.
tar
La -t
bandera de la lista enumerará los contenidos por usted. Agregue eso a sus otras banderas (así que -tvfz
para a tar.gz
, -tvfj
para 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 tar
es recordar todas las otras banderas . Por lo tanto, generalmente confío en 7z
(del p7zip-full
paquete) 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.gz
como en .7z
archivos. 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
/ tbz
archivos
$ 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 PATH
archivo 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 vim
para 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 tzvf
le mostrará el contenido de un archivo tar, unzip -l
lo hará para un archivo zip, y así sucesivamente.
lesspipe
es un script de shell instalado de manera predeterminada como parte del less
paquete que puede enumerar el contenido de un tar.gz
archivo, 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 less
comando ( vea la respuesta de Oli ) como un preprocesador de entrada si la $LESSOPEN
variable de entorno está configurada adecuadamente.
Si se siente aventurero, eche un vi /usr/bin/lesspipe
vistazo para ver qué comandos usa. Para los archivos que coinciden con la tar.gz
extensión, podemos ver que se usa tar tzvf
debajo del capó junto con la --force-local
opción de deshabilitar una característica oscura tar
que 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.gz
archivos 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.