Como listar o conteúdo de todos os arquivos .zip em uma pasta e grep para um arquivo específico?

26

Eu tenho 348 arquivos zip e quero encontrar um arquivo que esteja em um dos arquivos zip, unzip -l não funciona com curingas?

Como posso listar o conteúdo de todos os arquivos .zip e grep através da lista mesclada de todos os arquivos contidos nos zips?

    
por Eduard Florinescu 05.10.2012 / 11:19

3 respostas

16

Usar zipinfo é uma boa solução aqui. No entanto, em geral, sempre que você quiser aplicar um comando a uma lista de arquivos e o comando não aceitar uma lista de arquivos, você poderá usar um for loop:

for file in *.zip; do
    unzip -l "$file"
done \
| grep "\.zip\|setup"

Se o arquivo que você está procurando tiver espaços como: your file , na expressão regular do grep você precisa sair de cada espaço com uma barra invertida como grep "\.zip\|your\ file" .

    
por Konrad Rudolph 05.10.2012 / 16:06
11

Você pode usar zipinfo . Está incluído na instalação padrão do Ubuntu. Consulte a página de manual para obter mais informações.

Por exemplo, para procurar um padrão setup em um monte de arquivos zip no diretório atual, use este comando:

find ./ -iname *zip 2> /dev/null -print0 | xargs -0 zipinfo | grep setup
    
por Anwar 05.10.2012 / 11:22
6

Para listar os arquivos em um arquivo zip, você pode usar o seguinte comando.

unzip -l

Para aplicar um arquivo compactado, você deve usar os utilitários de arquivo compactados criados para trabalhar com esse tipo de formato de arquivo.

Para arquivos zip:

zipgrep --help  
usage: zipgrep [egrep_options] pattern zipfile [members...]
Uses unzip and egrep to search the zip members for a string or pattern.

Para arquivos tar:

zgrep --help
Usage: /bin/zgrep [OPTION]... [-e] PATTERN [FILE]...
Look for instances of PATTERN in the input FILEs, using their
uncompressed contents if they are compressed.

OPTIONs are the same as for 'grep'.

Existem algumas outras ferramentas que também funcionam com arquivos. Você pode enviar o out para grep para fazer a mesma coisa.

zcat
zcat my.archive.zip | grep "some text"

Ou você pode usar a funcionalidade de pesquisa dessas ferramentas

zless
zmore
    
por nelaaro 05.10.2012 / 11:35

Tags