Listar arquivos, incluindo o conteúdo do arquivo

1

Existe algum método para encontrar, a partir do shell, todos os arquivos correspondentes a um padrão de arquivo, incluindo aqueles dentro de arquivos (especificamente: arquivos zip)?

O pacote de simulação "VASP" produz arquivos chamados "OUTCAR" entre outros. Esses arquivos agora são distribuídos em centenas de pastas, a maioria, mas não todas, compactadas para acelerar os backups incrementais, reduzindo a confusão de arquivos. Agora eu quero executar como script em todos os arquivos OUTCAR compactados e não zipados.

Claro que eu poderia escrever um script que usa "find" para encontrar os arquivos descompactados e uma combinação de find, grep e unzip para encontrar os arquivos zipados, mas uma solução padrão, se houver, seria preferida, como seria permite tratar facilmente arquivos zip como pastas somente leitura nos meus scripts.

Idealmente, haveria um conjunto de comandos emulando o comportamento de comandos de shell comuns, como cat , grep , find , exceto que eles permitem arquivos zip como parte dos nomes de arquivos.

Eu não exigiria que essas ferramentas pudessem manipular arquivos zip aninhados. A razão pela qual eu mudei de .tar.gz para .zip é a existência de um índice de arquivo acessível sem extrair nada (uma grande diferença de velocidade para arquivos de 100 MB com alta compactação) que é parcialmente perdida quando arquivos aninhados estão envolvidos. >

Em uma nota lateral, estou usando o Windows 7 com o Cygwin (embora isso faça diferença apenas no desempenho da criação do processo).

    
por kdb 17.07.2013 / 17:39

3 respostas

0

Você pode listar o conteúdo do arquivo zip com o comando unzip como este

 unzip -l file.zip

Editar: na verdade, essa resposta pode ser muito útil para o que você está tentando realizar

    
por 17.07.2013 / 17:51
0

Se você estiver no OSX, tente os mesmos utilitários com um z prefixado ao nome deles. Eles vão percorrer arquivos zipados e não zipados.

Nas páginas man:

zgrep, zegrep, and zfgrep act like grep, egrep, and fgrep, respectively, but accept input files compressed with the compress(1) or gzip(1) compression utilities.

e

zcat  is identical to gunzip -c.

No Debian linux

zgrep

é um wrapper de script que desarquiva o arquivo zip e passa por ele, então pelo menos você não teria que escrever isso sozinho.

    
por 18.07.2013 / 06:30
0

Deve haver apenas alguns minuetos para estender o exemplo do osthon em python até a) listar os arquivos que correspondem ao seu padrão (usando re nas listas de arquivos) eb) quando encontrar um zipado / tarado / etc arquivo abri-los usando a biblioteca apropriada e padrão correspondem aos nomes de arquivo dentro. (Desculpe, não posso realmente escrever para você, já que tenho que sair para o trabalho).

    
por 18.07.2013 / 06:59