Problema em descompactar arquivos .zip

1. Problema em descompactar arquivos .zip

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/03/2018 - 01:03h


for i in $(ls *.zip);do

echo "$i"

unzip -n "$i"; 2>> $log

rm "$i" 2>> $log

done




Arquivo de log:

rm: não foi possível remover 'Book': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Antiqua.zip': Arquivo ou diretório não encontrado


rm: não foi possível remover 'Century': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Schoolbook': Arquivo ou diretório não encontrado
rm: não foi possível remover 'L': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Regular.zip': Arquivo ou diretório não encontrado


rm: não foi possível remover 'VTKS': Arquivo ou diretório não encontrado
rm: não foi possível remover 'ROCK': Arquivo ou diretório não encontrado
rm: não foi possível remover 'GARAGE': Arquivo ou diretório não encontrado
rm: não foi possível remover 'BAND.zip': Arquivo ou diretório não encontrado



$ ls -1
Book Antiqua.zip
Caf? Fran?oise II.png
Caf? Fran?oise.otf
Century Schoolbook L Regular.zip
Gabriele.afm
OneTwoTrees_banni?re.png
VTKS ROCK GARAGE BAND.zip


Já tem o "$i"?



  


2. Re: Problema em descompactar arquivos .zip

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 27/03/2018 - 10:02h

Tem um erro no seu código, um ponto-e-vírgula onde não deveria estar. Vou colocar do jeito q deve ser:


for i in $(ls *.zip);do
echo "$i"
unzip -n "$i" 2>> $log
rm "$i" 2>> $log
done


Caso ainda esteja dando erro, execute o seu script em modo debug:


$ bash -x script.sh


--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


3. Re: Problema em descompactar arquivos .zip

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/03/2018 - 12:27h

meianoite escreveu:

for i in $(ls *.zip);do
echo "$i"
unzip -n "$i"; 2>> $log
rm "$i" 2>> $log
done

Arquivo de log:
rm: não foi possível remover 'Book': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Antiqua.zip': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Century': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Schoolbook': Arquivo ou diretório não encontrado
rm: não foi possível remover 'L': Arquivo ou diretório não encontrado
rm: não foi possível remover 'Regular.zip': Arquivo ou diretório não encontrado
rm: não foi possível remover 'VTKS': Arquivo ou diretório não encontrado
rm: não foi possível remover 'ROCK': Arquivo ou diretório não encontrado
rm: não foi possível remover 'GARAGE': Arquivo ou diretório não encontrado
rm: não foi possível remover 'BAND.zip': Arquivo ou diretório não encontrado

$ ls -1
Book Antiqua.zip
Caf? Fran?oise II.png
Caf? Fran?oise.otf
Century Schoolbook L Regular.zip
Gabriele.afm
OneTwoTrees_banni?re.png
VTKS ROCK GARAGE BAND.zip
Já tem o "$i"?


Boa tarde MeiaNoite.
O erro ocorre também, pq existem ESPAÇOS nos nomes dos arquivos!
Veja:
Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip


Solução:
Use o descritor de aquivos:
exec 3< <(ls)
while read ARQ <&3; do
echo \"${ARQ// /\\ }\"
unzip -n "$ARQ"; 2>> $log
rm "$ARQ" 2>> $log
done
exec 3<&-


Marcelo Oliver



4. Re: Problema em descompactar arquivos .zip

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 27/03/2018 - 12:57h

msoliver escreveu:

Boa tarde MeiaNoite.
O erro ocorre também, pq existem ESPAÇOS nos nomes dos arquivos!
Veja:
Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip


Solução:
Use o descritor de aquivos:
exec 3< <(ls)
while read ARQ <&3; do
echo \"${ARQ// /\\ }\"
unzip -n "$ARQ"; 2>> $log
rm "$ARQ" 2>> $log
done
exec 3<&-


Marcelo Oliver


Ele colocou entre aspas a variável, portanto deveria funcionar tb mesmo com espaços. A sua solução tb é legal.

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


5. Re: Problema em descompactar arquivos .zip

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/03/2018 - 14:52h

renato_pacheco escreveu:

Tem um erro no seu código, um ponto-e-vírgula onde não deveria estar. Vou colocar do jeito q deve ser:


for i in $(ls *.zip);do
echo "$i"
unzip -n "$i" 2>> $log
rm "$i" 2>> $log
done


Caso ainda esteja dando erro, execute o seu script em modo debug:


$ bash -x script.sh


--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh




#!/bin/bash

log="/tmp/relatorio.txt"


for i in $(ls *.zip);do
echo "$i"
unzip -n "$i" 2>> $log
#rm "$i" 2>> $log
done



exit 0

====================================================================







$ bash -x script.sh
+ log=/tmp/relatorio.txt
++ ls 'Book Antiqua.zip' 'Century Schoolbook L Regular.zip' 'VTKS ROCK GARAGE BAND.zip'
+ for i in '$(ls *.zip)'
+ echo Book
Book
+ unzip -n Book
+ for i in '$(ls *.zip)'
+ echo Antiqua.zip
Antiqua.zip
+ unzip -n Antiqua.zip
+ for i in '$(ls *.zip)'
+ echo Century
Century
+ unzip -n Century
+ for i in '$(ls *.zip)'
+ echo Schoolbook
Schoolbook
+ unzip -n Schoolbook
+ for i in '$(ls *.zip)'
+ echo L
L
+ unzip -n L
+ for i in '$(ls *.zip)'
+ echo Regular.zip
Regular.zip
+ unzip -n Regular.zip
+ for i in '$(ls *.zip)'
+ echo VTKS
VTKS
+ unzip -n VTKS
+ for i in '$(ls *.zip)'
+ echo ROCK
ROCK
+ unzip -n ROCK
+ for i in '$(ls *.zip)'
+ echo GARAGE
GARAGE
+ unzip -n GARAGE
+ for i in '$(ls *.zip)'
+ echo BAND.zip
BAND.zip
+ unzip -n BAND.zip
+ exit 0






6. Re: Problema em descompactar arquivos .zip

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 27/03/2018 - 14:55h

O problema está no seu laço. Coloque-o entre aspas, assim:


for i in "$(ls *.zip)"; do
...

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


7. Re: Problema em descompactar arquivos .zip

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/03/2018 - 15:04h

renato_pacheco escreveu:

O problema está no seu laço. Coloque-o entre aspas, assim:


for i in "$(ls *.zip)"; do
...

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh



$ bash -x script.sh
+ log=/tmp/relatorio.txt
++ ls 'Book Antiqua.zip' 'Century Schoolbook L Regular.zip' 'VTKS ROCK GARAGE BAND.zip'
+ for i in '"$(ls *.zip)"'
+ echo 'Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip'
Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip
+ unzip -n 'Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip'
+ exit 0




#!/bin/bash

log="/tmp/relatorio.txt"


for i in "$(ls *.zip)";do
echo "$i"
unzip -n "$i" 2>> $log
#rm "$i" 2>> $log
done


exit 0





$ cat /tmp/relatorio.txt
unzip: cannot find or open Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip, Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip.zip or Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip.ZIP.




8. Re: Problema em descompactar arquivos .zip

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/03/2018 - 15:09h

msoliver escreveu:

Solução:

Use o descritor de aquivos:

exec 3< <(ls)

while read ARQ <&3; do

echo \"${ARQ// /\\ }\"


unzip -n "$ARQ"; 2>> $log

done

exec 3<&-




?

Não entendi o código.




9. Re: Problema em descompactar arquivos .zip

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 27/03/2018 - 15:17h

Nesse caso, ou vc usa a técnica do descriptor ou vc usa modificando o IFS, q é o separador interno do ambiente do bash. Mudando ele, vc pode determinar o separador do for, mas dá um pouco mais de trabalho. Vc pode ver isso aqui: https://bash.cyberciti.biz/guide/$IFS
--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


10. Re: Problema em descompactar arquivos .zip

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/03/2018 - 15:17h

renato_pacheco escreveu:

msoliver escreveu:

Boa tarde MeiaNoite.
O erro ocorre também, pq existem ESPAÇOS nos nomes dos arquivos!
Veja:
Book Antiqua.zip
Century Schoolbook L Regular.zip
VTKS ROCK GARAGE BAND.zip


Solução:
Use o descritor de aquivos:
exec 3< <(ls)
while read ARQ <&3; do
echo \"${ARQ// /\\ }\"
unzip -n "$ARQ"; 2>> $log
rm "$ARQ" 2>> $log
done
exec 3<&-


Marcelo Oliver


Ele colocou entre aspas a variável, portanto deveria funcionar tb mesmo com espaços. A sua solução tb é legal.

--
Renato Carneiro Pacheco
Certificado Linux LPIC-1
Especialista em Segurança em Redes de Computadores
Graduado em Redes de Comunicação

http://br.linkedin.com/in/renatocarneirop
http://www.facebook.com/renatocarneirop

"Não acredite no que eu digo, pois é a minha experiência e não a sua. Experimente, indague e busque." - Osho Rajneesh


Meianoite, somente colocar entre aspas, não soluciona...
É necessário "escapar" os espaços...
Como é feito na linha:
echo \"${ARQ// /\\ }\"

Arrumando o Script que postei:
exec 3< <(ls)
while read ARQ <&3; do
echo \"${ARQ// /\\ }\"
unzip -n "${ARQ// /\\ }\"; 2>> $log
rm "${ARQ// /\\ }\" 2>> $log
done
exec 3<&-


Marcelo Oliver


11. Re: Problema em descompactar arquivos .zip

Perfil removido
removido

(usa Nenhuma)

Enviado em 27/03/2018 - 15:30h

msoliver escreveu:





#!/bin/bash

log="/tmp/relatorio.txt"


exec 3< <(ls)
while read ARQ <&3; do
echo \"${ARQ// /\\ }\"
unzip -n "${ARQ// /\\ }\"; 2> $log
rm "${ARQ// /\\ }\" 2>> $log
done
exec 3<&-



exit 0



$ cat /tmp/relatorio.txt
unzip: cannot find or open Book\ Antiqua.zip"; 2> /tmp/relatorio.txt
rm Book\, Book\ Antiqua.zip"; 2> /tmp/relatorio.txt
rm Book\.zip or Book\ Antiqua.zip"; 2> /tmp/relatorio.txt
rm Book\.ZIP.
unzip: cannot find or open Century\ Schoolbook\ L\ Regular.zip"; 2> /tmp/relatorio.txt
rm Century\, Century\ Schoolbook\ L\ Regular.zip"; 2> /tmp/relatorio.txt
rm Century\.zip or Century\ Schoolbook\ L\ Regular.zip"; 2> /tmp/relatorio.txt
rm Century\.ZIP.
unzip: cannot find or open Gabriele.afm"; 2> /tmp/relatorio.txt
rm Gabriele.afm", Gabriele.afm"; 2> /tmp/relatorio.txt
rm Gabriele.afm".zip or Gabriele.afm"; 2> /tmp/relatorio.txt
rm Gabriele.afm".ZIP.
unzip: cannot find or open George\ Harrison.ttf"; 2> /tmp/relatorio.txt
rm George\, George\ Harrison.ttf"; 2> /tmp/relatorio.txt
rm George\.zip or George\ Harrison.ttf"; 2> /tmp/relatorio.txt
rm George\.ZIP.
unzip: cannot find or open VTKS\ ROCK\ GARAGE\ BAND.zip"; 2> /tmp/relatorio.txt
rm VTKS\, VTKS\ ROCK\ GARAGE\ BAND.zip"; 2> /tmp/relatorio.txt
rm VTKS\.zip or VTKS\ ROCK\ GARAGE\ BAND.zip"; 2> /tmp/relatorio.txt
rm VTKS\.ZIP.
unzip: cannot find or open script.sh"; 2> /tmp/relatorio.txt
rm script.sh", script.sh"; 2> /tmp/relatorio.txt
rm script.sh".zip or script.sh"; 2> /tmp/relatorio.txt
rm script.sh".ZIP.






$ bash -x script.sh
+ log=/tmp/relatorio.txt
+ exec
+ read ARQ
++ ls
+ echo '"Book\' 'Antiqua.zip"'
"Book\ Antiqua.zip"
+ unzip -n 'Book\ Antiqua.zip"; 2> /tmp/relatorio.txt
rm Book\' 'Antiqua.zip"'
+ read ARQ
+ echo '"Century\' 'Schoolbook\' 'L\' 'Regular.zip"'
"Century\ Schoolbook\ L\ Regular.zip"
+ unzip -n 'Century\ Schoolbook\ L\ Regular.zip"; 2> /tmp/relatorio.txt
rm Century\' 'Schoolbook\' 'L\' 'Regular.zip"'
+ read ARQ
+ echo '"Gabriele.afm"'
"Gabriele.afm"
+ unzip -n 'Gabriele.afm"; 2> /tmp/relatorio.txt
rm Gabriele.afm"'
+ read ARQ
+ echo '"George\' 'Harrison.ttf"'
"George\ Harrison.ttf"
+ unzip -n 'George\ Harrison.ttf"; 2> /tmp/relatorio.txt
rm George\' 'Harrison.ttf"'
+ read ARQ
+ echo '"VTKS\' 'ROCK\' 'GARAGE\' 'BAND.zip"'
"VTKS\ ROCK\ GARAGE\ BAND.zip"
+ unzip -n 'VTKS\ ROCK\ GARAGE\ BAND.zip"; 2> /tmp/relatorio.txt
rm VTKS\' 'ROCK\' 'GARAGE\' 'BAND.zip"'
+ read ARQ
+ echo '"script.sh"'
"script.sh"
+ unzip -n 'script.sh"; 2> /tmp/relatorio.txt
rm script.sh"'
+ read ARQ
+ exec
+ exit 0





$ ls -1
Book Antiqua.zip
Century Schoolbook L Regular.zip
Gabriele.afm
George Harrison.ttf
VTKS ROCK GARAGE BAND.zip
script.sh





12. Re: Problema em descompactar arquivos .zip

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/03/2018 - 15:35h

meianoite escreveu:

msoliver escreveu:

Solução:

Use o descritor de aquivos:

exec 3< <(ls)
while read ARQ <&3; do
echo \"${ARQ// /\\ }\"
unzip -n "$ARQ"; 2>> $log
done
exec 3<&-



?
Não entendi o código.


Vou tentar explicar:
exec 3< <(ls) #Coloca a saída do comando "ls" no "descritor de arquivos  nº 3"
while read ARQ <&3; do #Pega o conteúdo do "descritor de arquivos nº 3", linha por linha.
echo \"${ARQ// /\\ }\" #Troca espaço por "\ ", "escapando os espaços"
unzip -n "${ARQ// /\\ }" ; 2>> $log #Descompacta
rm "${ARQ// /\\ }" # Remove
done #Encerra o laço.
exec 3<&-#Fecha o Descritor de Arquivos Nº 3

[/quote]

É isso.




01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts