Quero ver o conteúdo (lista de arquivos e pastas) de um arquivo, por exemplo, um tar.gzarquivo sem extraí- lo.
Existem métodos para fazer isso?
Quero ver o conteúdo (lista de arquivos e pastas) de um arquivo, por exemplo, um tar.gzarquivo sem extraí- lo.
Existem métodos para fazer isso?
Respostas:
Execute o comando abaixo no terminal para ver o conteúdo de um arquivo tar.gz sem extraí-lo:
tar -tf filename.tar.gz

-t, --list
Lista o conteúdo de um arquivo. Os argumentos são opcionais. Quando fornecidos, eles especificam os nomes dos membros a serem listados.
tar -tvf xxx.tgzisso também mostraria propriedades detalhadas dos arquivos.
treever uma exibição de árvoretar -tf filename.tar.gz | tree
unzip -l/unrar -l
Você também pode usar o vim
vim filename.tar.gz
ex +%p foo.tar.gz.
vim file.tar.gz), ele diz "Selecione um arquivo com o cursor e pressione ENTER". Você faz exatamente isso, mova o cursor sobre um arquivo e pressione ENTER.
lesstambém pode abrir arquivos gzcompactados e descompactados tar. Também oferece uma ls -lsaída de estilo adorável :
$ 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
...
E como é less, você pode rolar, pesquisar, etc. No entanto, falha miseravelmente com outros algoritmos de compactação (na minha experiência).
aliasopções especiais para o lessque não está sendo exibido aqui? Eu apenas tentei ver isso, mas não funcionou. Não tenho aliases configurados para less.
tarA -tbandeira de listará o conteúdo para você. Adicione isso aos seus outros sinalizadores ( -tvfzpara a tar.gz, -tvfjpara a tar.bz2, etc) e você poderá navegar sem extrair. De lá, você pode extrair arquivos únicos com bastante facilidade
tar -xvfz mybackup.tar.gz path/to/file
O grande problema taré lembrar todas as outras bandeiras . Por isso, costumo confiar em 7z(do p7zip-fullpacote) para fazer todo o meu arquivamento. Não vou afirmar que é totalmente melhor, mas suporta quase tudo (sem precisar especificar o tipo de compactação) e os argumentos são lógicos.
7z l archive.ext
7z e archive.ext path/to/file
É certamente menos capaz, mas você não precisa da página de manual para usá-lo.
Há também Midnight Commander ( mc). Este é um assunto geral para gerenciamento de arquivos quase gráfico baseado em terminal e, com alguns testes leves, permite navegar nos arquivos .tar.gze nos .7zarquivos. Não tenho certeza de quantos outros ele suporta.
Bem, isso depende do arquivo. A maioria dos programas de (des) compactação possui um sinalizador que lista o conteúdo de um arquivo.
tar/ tar.gz/ tgz/ tar.xz/ tar.bz2/ tbzarquivos
$ tar tf foo.tgz
dir1/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
dir2/
zip arquivos
$ zip -sf foo.zip
Archive contains:
dir1/
dir2/
dir1/subdir1/
dir1/subdir1/file
dir1/subdir2/
dir1/subdir2/file
Total 6 entries (0 bytes)
7zip arquivos
$ 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 arquivos
$ 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%
Esses são os formatos de arquivo mais populares. Com tudo isso em mente, você pode escrever um pequeno script que usa o comando apropriado, dependendo da extensão do arquivo que você atribui a ele:
#!/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
Salve esse script no seu PATHe torne-o executável. Você pode listar o conteúdo de qualquer arquivo:
$ 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)
E como alguém mencionou esse editor menor, naturalmente, o emacs também pode fazer isso:

Por que não usar vimpara procurar seu arquivo morto e abrir arquivos (pelo menos arquivos semelhantes a texto):
vim archive.tar.gz

Pressione as teclas de seta para rolar e Enterabrir um arquivo.
O Midnight Commander ( mc) também possui um bom visualizador de arquivos compactados, embora eu considere isso meio trapaceiro, já que o mc é um gerenciador de arquivos, embora seja baseado em texto.
Além disso, se tudo o que você deseja é ver o que há dentro dos arquivos compactados, você pode aprender o comando "view" para cada compressor. tar tzvfmostrará o conteúdo de um arquivo tar, unzip -lfará isso para um arquivo zip e assim por diante.
lesspipeé um script de shell instalado por padrão como parte do lesspacote que pode listar o conteúdo de um tar.gzarquivo morto, além de vários outros formatos comuns de arquivo morto.
$ 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
É chamado pelo lesscomando ( consulte a resposta de Oli ) como um pré-processador de entrada se a $LESSOPENvariável de ambiente estiver configurada adequadamente.
Se estiver se aventurando, dê uma olhada em vi /usr/bin/lesspipequais comandos ele usa. Para arquivos que correspondem à tar.gzextensão, podemos ver que ele é usado tar tzvfsob o capô, juntamente com a --force-localopção de desativar um recurso obscuro tarque, de outra forma, confundir dois pontos no nome do arquivo com um comando para usar uma unidade de fita remota:
*.tar.gz|*.tgz|*.tar.z|*.tar.dz)
tar tzvf "$1" --force-local
Observe que, como foi desenvolvido principalmente como pré-processador less, não produzirá nada se não reconhecer o tipo de arquivo. Notei que alguns .tar.gzarquivos que baixei não funcionavam porque na verdade não usavam a compactação gzip, apesar do nome do arquivo.
Se você deseja visualizar o conteúdo de um arquivo específico dentro de um archive sem extrair o archive ou gravar no disco de qualquer forma, use o sinalizador -O (capital o) para gravar no stdout em vez de em um arquivo.
tar -Oxvf gerald.tar.gz /path/to/sandra.txt | less
Verifique se o O vem antes do f ou ele tenta analisar o O como um nome de arquivo.