Ir ao conteúdo

Como zipar vários arquivos individualmente?


NeoTUX

Posts recomendados

Postado

Achei esse comando aqui:

Para fazer este procedimento entre no diretório em questão e execute o comando:

$ for i in `ls –color=no *`; do zip $i.zip $i; done

Mas ele não tá funcionando, se é que deveria funcionar. O que eu quero é poder zipar vários arquivos de uma pasta, porém, individualmente usando o nome dos mesmos + a extensão .zip.

Ex:

arquivo1.txt

arquivo2.txt

para

arquivo1.zip

arquivo2.zip

Existe alguma possibilidade? :help:

Obs. Uso o Slackware 10

Postado

não conheço shell script (se é que isso é shell script), mas tem mesmo essa ';' no:

$ for i in `ls –color=no *`; do zip $i.zip $i; done

tente tirar ela, sei lá, fica ai uma coisa que eu queria ver

Postado

Ops, não vi que estava certo no primeiro comentário. De fato, aqui funcionou:

for i in `ls --color=no *`; do zip $i.zip $i; done

Que erro aparece aí?

Postado

Confirma aí essa linha de comando, porque aqui ainda tá dando o seguinte erro:

zip error: Nothing to do! (Arquivo1\.zip)

zip warning: name not matched: Arquivo2\

zip error: Nothing to do! (Arquivo2\.zip)

zip warning: name not matched: Arquivo3\ ... e assim por diante :muro:

Não entendo o funcionamento dessa linha de comando. Me ajuda! :cry:

Postado

Copia e coloca na linha de comando:

for i in um em baixo do outro; do echo $i;done

acho que é auto-explicativo, mas...

cada palavra da frase "um em baixo do outro" é colocada na variável "i" e executado (do) o comando (echo $i) com ela.

Vê como eu testei o comando que queres aqui:

Numa pasta vazia, cria 3 arquivos para teste com 50Kb cada com conteúdo nulo:

for i in documento.pdf programa imagem.jpg; do dd if=/dev/zero of=$i bs=1024 count=50;done

... aí compacta todos arquivos desta pasta no formato zip.

for i in `ls *`; do zip $i.zip $i; done

Então... tentei reproduzir o teu erro aqui, e pra conseguir isso, foi preciso colocar parâmetros no lugar de `ls *` que retornem outras coisas que não arquivos da pasta. Tipo `ls -al`. Se usares `ls *` (é crase mesmo) ou simplesmente * (sem crase sem nada) vai funcionar também.

:-BEER

Postado

Ok andrems, desde o começo era pra linha de comando que eu postei funcionar, assim como a tua linha também deveria já ter funcionado, porém, descobri que o que está impedindo a compactação é o fato do nome dos arquivos conter espaços. Se eu colocar por ex:.

Readme1.txt

Readme2.txt

ele gera:

Readme1.txt.zip

Readme2.txt.zip

mas se eu colocar:

Read me1.txt

Readme2.txt

ele gera:

zip error: Nothing to do! (Read\.zip)

zip warning: name not matched: me1.txt*

zip error: Nothing to do! (me1.txt*zip)

adding: Readme2.txt (deflated x%)

Pergunta 1: Tem como contornar esse problema?

Pergunta 2: Tem como o arquivo zipado não conter sua antiga extensão (txt) no nome do arquivo zipado?

Desde já, agradeço! :bye:

Postado

o linux não encara esse ".txt" como uma extensão, pra ele isso não importa muito, dê outro nome pra ele, tirando esse txt, ele vai continuar um arquivo de texto puro.

Postado

Esse lance dele zipar o arquivo com o "txt" antes do .zip é o de menos, apesar de que eu tenho uma tarefa muito específica que consiste em zipar mais de 11.000 arquivos, preservando o nome original dos mesmos. O problema mesmo tá nos "espaços" nos nomes dos arquivos, que o meu slackware entende como um diretório, não como um arquivo, logo não zipa os mesmos. :muro: Consegue pensar em alguma solução? :help:

Postado

não dá pra substituir os espaços por "_" não, acho que não é muito complicado não, se pra você com o "_" for o mesmo que com o espaço, eu até te ajudo a bolar uma linha pra fazer isso (mesmo sem saber como fazer, ms não deve ser muito complicado não :P )

Postado

Não achei uma solução. Mas fiz uma gambiarra aqui que deu certo.

for i in `ls | sed 's/ /_X_/g'`; do zip "`echo $i | sed 's/_X_/ /g'`".zip "`echo $i | sed 's/_X_/ /g'`"; done

O podre dessa linha é que os _X_ (que usei como temporário pra que a besta do 'for' entenda que tô falando de um arquivo com espaço) não pode conter em nenhum nome de arquivo, se tiver, troca por algo mais maluco que não tenha! :wacko: Com certeza não é uma solução bonita, mas tendo que trabalhar somente com os 5~6 comandos que conheço, acho que tá bom! :P

:-BEER

  • 7 meses depois...
  • 1 ano depois...
Postado

Ajuda eu ai gente!

Tenho um mec com protools TDM e com mix plus e uma interface 88/2, gravei um audio em wav no vegas 7.0 5.1 com seis canais e importei este audio no protools, após criar uma sessão 5.1, o audio é importado normalmente, mas abre os 5 canais em um track só assim não consigo mixar este os canais separadamente, percebo que antes de importar o audio, ele me mostra uma lista com os audios, separados, mas não importa desta forma, como faço para importar estes canais separadamente para poder mixa-los, detalhe utilizo uma command8

Obrigado

Grilo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!