shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Descompactar arquivos pelo Nautilus


From: Fernando Mercês
Subject: Re: [shell-script] Descompactar arquivos pelo Nautilus
Date: Wed, 18 Jan 2012 09:13:04 -0200

Sempre tem como encurtar. hehe

No entanto, confesso que não entendi bem a última parte. Você diz que quer
retornar por exemplo "arquivo2.part1.rar", mas quer ignorar
"arquivo2.part2.rar". É isso mesmo? Poderia explicar melhor?

Eu tinha entendido que você não queria arquivos com "part". Neste caso:

grep -E '\.(zip|rar|7z(\.001)?)$' | grep -Ev 'part[0-9]{0,3}\.rar'

Agora, se só não quiser os arquivos que terminam com .part, só o primeiro
grep já resolve.

Qualquer outra possibilidade eu não entendi. rs

Um abraço.

Att,

Fernando Mercês
Linux Registered User #432779
www.mentebinaria.com.br
softwarelivre-rj.org
@MenteBinaria
------------------------------------
II Hack'n Rio - 23 e 24/11
                 hacknrio.org
------------------------------------


2012/1/15 Alysson Gonçalves de Azevedo <address@hidden>

> **
>
>
> Ola pessoal, mais uma vez amolando vocês aqui, mas segue a nova versão do
> programinha: http://pastebin.com/xT4ySeku
> Com relação à funcionalidade do programa, acho que já está ok (inclusive eu
> dei um jeito de colocar o yad bunitinho junto).
>
> IFS="
> > "
> >
> > #NAUTILUS_SCRIPT_SELECTED_FILE_PATHS é a lista de todos os arquivos
> > selecionados, por isso é necessário tratar eles com um for
> > for SELECTED in ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS}; do
>
> > #Muda o dir corrente para o dir passado por parametro e então extrai
> > os arquivos la
> > [ -d ${SELECTED} ] && cd ${SELECTED} || cd "`dirname "${SELECTED}"`"
> >
> > #Lista os arquivos a serem descompactados, se for um arquivo, retorna
> > ele mesmo, se for uma pasta, retorna os arquivos dentro dela
> > FILES=`ls ${SELECTED} | grep -E '\.(zip|rar|7z|7z\.001)$' | grep -Ev
> > '\.part([1-9][[:digit:]]|[[:digit:]]*(0|[2-9]))\.rar$'`
> > #O segundo grep exclui arquivos.partN.rar, onde N não seja 1,01,001 e
> > etc.
> >
> > #Extrai cada arquivo da lista
> > for NOME in ${FILES}; do
> > echo "#${NOME##/*/}" #Mostra o nome do arquivo no display de
> > progresso do yad
> > 7z x -y "${NOME}"
> > done
> > done | \
> > yad --title="yXtractor" --text="Extraindo arquivos..." --progress
> > --pulsate --no-buttons --auto-close --width=300 #--undecorated
> >
>
> a minha duvida ficou no trecho:
> FILES=`ls ${SELECTED} | \
> * grep -E '\.(zip|rar|7z|7z\.001)$' | \
> grep -Ev '\.part([1-9][[:digit:]]|[[:digit:]]*(0|[2-9]))\.rar$'*`
>
> esse trecho serve para retornar arquivos completos e divididos, assim:
> "arquivo1.rar", "arquivo2.part1.rar", "arquivo3.part001.rar" mas que ignore
> "arquivo2.part2.rar" ou "arquivo3.part010", por exemplo.
>
> a questão é... tem como encurtar esse trecho? talvez um awk ou outra
> coisa... eu até dei uma googlada, mas eu não sei exatamente quais termos
> procurar...
>
> desde já agradeço.
>
>
> Alysson Gonçalves de Azevedo
> (11) 8491-7730
>
> Em 15 de janeiro de 2012 13:29, Alysson Gonçalves de Azevedo <
>
> address@hidden> escreveu:
>
> > Hehe, bem, o seu livro ta na lista pra eu comprar...
> > mas como comecei a fazer o script já era 2h da manhã, não tinha livraria
> > aberta...
> >
> > mas enfim, por enquanto eu vou usar a versão simples e depois, quando
> > tiver tempo, eu descubro como usar o Yad.
> >
> > Vlw o/.
> >
> >
> > Alysson Gonçalves de Azevedo
> > (11) 8491-7730
> >
> >
> >
> > Em 15 de janeiro de 2012 12:22, Julio C. Neves <address@hidden
> >escreveu:
> >
> > Fala Alisson,
> >> tenho algumas observações acerca do seu script:
> >>
> >> A partir do Bash 4.0 vc tem o cmd coproc, para fazer thread. Dê
> >> preferência
> >> a usá-lo no seu script;
> >>
> >> Como vc não usa o IFS diferente de <ENTER>, não precsa salvá-lo nem
> >> restaurá-lo, pois será automaticamente restaurado ao final do sript;
> >>
> >> Eu trocaria:
> >>
> >> for SELECTED in `find ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} -type f
> >> -maxdepth 1 -regex
> >> ".*\(zip\|rar\|7z\|tar\|gz\|bz2\|tar.gz\|tar.bz2\|lzma\)$"`
> >>
> >> por:
> >>
> >> for SELECTED in `grep -E
> \.(zip|rar|7z|tar|gz|bz2|tar.gz|tar.bz2|lzma)$"`
> >>
> >> Por ser mais curto e mais rápido e rodar em qq plataforma.
> >>
> >> Amigo, nunca nessa lista ninguém me ouviu falar para comprar meu livro,
>
> >> que publiquei outro na Internet.
> >>
> >> Agora publiquei um sobre interfaces gráficas, que abrange o dialog,
> >> kdialog, zenity e YAD. Escrevi esse livro pq precisei usar zenity e
> >> descobri que não existe documentação completa (nem no man) e tive de
> >> aprendê-lo pelo código. Essa característica é comum a todos.
> >>
> >> Não creio que exista literatura sobre esses 4 sws tão completa em nenhum
> >> idioma qto o Bombando o Shell (pelo menos em português e inglês não
> >> existe,
> >> só se estiver muito bem escrito).
> >>
> >> O YAD merece esse investimento. É uma revolução em todas as interfaces
> >> gráficas é o que se fez de mais significante desde o TK (que
> infelizmente
> >> não foi portado para o Shell, mas tenho ideia de fazê-lo em 2012).
> >>
> >> O Raimundo assistiu uma palestra minha (no CONSEGI em BSB) e gostou
> tanto
> >> do sw que escreveu o artigo sobre YAD que vc leu. O YAD é muito
> completo e
> >> está com uma evolução a jato. Quem gosta de shell não pode ignorá-lo.
> >>
> >> Abcs,
> >> Julio
> >> *Já foi lançado "Bombando o
> >> Shell<
> >>
> http://www.brasport.com.br/index.php?dispatch=products.view&product_id=666
> >> >
> >> ". *
> >> *Show **de interfaces gráficas sob Shell!*
> >> *
> >> *
> >>
> >>
> >>
> >> Em 15 de janeiro de 2012 02:33, Alysson Gonçalves de Azevedo <
> >> address@hidden> escreveu:
> >>
> >> > **
> >> >
> >> >
> >> > Salve pessoal (que fica até de madrugada brincando com shell)!
> >> >
> >> > Bem, outro dia eu mandei um email da lista, sobre problemas com
> >> codificação
> >> > nos nomes do arquivos e talz.
> >> > Acontece que eu percebi que eu só tenho aquele problema quando eu uso
> o
> >> > programa padrão do gnome, através da opção "Extrair aqui", no menu de
> >> > contexto do nautilus.
> >> > Quando eu descompacto esses mesmos arquivos pelo terminal, usando
> >> programas
> >> > como gzip, tar e 7z, eu não tenho esse problema.
> >> >
> >> > Com isso, decidi montar meu próprio script <
> >> http://pastebin.com/6rgRUgVL>,
> >> > nesse link, o programa já extrai os arquivos selecionados, ou se for
> uma
> >> > pasta, ele descompacta recursivamente, e etc.
> >> > Até aqui foi fácil.
> >> >
> >> > Agora, como descompactar muitos arquivos pode ser "demorado", eu
> pensei
> >> eu
> >> > colocar o yad no meio... (como eu não sei usar nem yad, nem zenity,
> >> resolvi
> >> > começar pelo primeiro).
> >> >
> >> > Seguindo esse exemplo<
> >> >
> >>
> http://www.vivaolinux.com.br/artigo/Yad-016-Eu-quero-sempre-mais-de-ti/?pagina=4
> >> > >,
> >> > eu gostaria que ao executar o script, uma tela de acompanhamento fosse
> >> > exibida, para o usuário saber se ainda está descompactando ou se já
> >> acabou.
> >> >
> >> > Segue minha versão adaptada:
> >> >
> >> > > # Para funcionar, salve este arquivo com um nome qualquer no
> >> diretório:
> >> > > # "~/.gnome2/nautilus-scripts/"
> >> > > # O nome que colocar no arquivo será Exibido no menu de contexto do
> >> > > Nautilus.
> >> > > #
> >> > > # Para utilizar, basta apenas selecionar os arquivos, clique com o
> >> botão
> >> > > direito,
> >> > > # opção Scripts, clicar na opção com o nome desse script.
> >> > >
> >> > > OLDIFS=${IFS}
> >> > > IFS="
> >> > > "
> >> > > dcompact(){
> >> > > #Muda o dir corrente para o dir passado por parametro e então extrai
> >> > > os arquivos la
> >> > > [ -d ${1} ] && cd ${1} || cd "`dirname "$1"`"
> >> > > #Lista os arquivos a serem descompactados
> >> > > FILES=`find $1 -maxdepth 1 -type f -regex
> >> > > ".*\(zip\|rar\|7z\|tar\|gz\|bz2\|tar.gz\|tar.bz2\|lzma\)$"`
> >> > > #Contador
> >> > > i=0
> >> > > for FNOME in ${FILES}
> >> > > do
> >> > > 7z x -y "${FNOME}" & PID=$!;
> >> > > QTD=$(ps aux | egrep "$PID.*" | wc -l)
> >> > > while [ ${QTD} -eq 1 ]
> >> > > do
> >> > > i=$((i+1))
> >> > > QTD=$(ps aux | egrep "$PID.*" | wc -l)
> >> > > sleep 0.25
> >> > > echo "$i"
> >> > > done
> >> > > done
> >> > > killall yad
> >> > > exit 0
> >> > > }
> >> > > dcompact ${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS} \
> >> > > | yad --multi-progress --title='Extrair aqui' --button='Cancelar':1
> >> > > --bar="Extraindo-os...":NORM 5
> >> > >
> >> > > IFS=${OLDIFS}
> >> > >
> >> >
> >> > Com esse script, a janelinha do Yad aparece e já some na sequencia (eu
> >> não
> >> > acredito que meu note seja tão rápido pra descompactar 4 arquivos de
> >> 200mb
> >> > cada em menos de 1s).
> >> >
> >> > O meu problema é: eu não achei uma documentação como usar o yad, e
> >> apenas
> >> > tentar adaptar não deu resultado.
> >> > Alguém ai consegue me dar alguma dica, por menor que seja?!
> >> >
> >> > Obrigado.
> >> >
> >> > Alysson Gonçalves de Azevedo
> >> > (11) 8491-7730
> >> >
> >> > [As partes desta mensagem que não continham texto foram removidas]
> >> >
> >> >
> >> >
> >>
> >>
> >> [As partes desta mensagem que não continham texto foram removidas]
> >>
> >>
> >>
> >> ------------------------------------
> >>
> >> ----------------------------------------------------------
> >> Esta lista não admite a abordagem de outras liguagens de programação,
> >> como perl, C etc. Quem insistir em não seguir esta regra será moderado
> sem
> >> prévio aviso.
> >> ----------------------------------------------------------
> >> Sair da lista: address@hidden
> >> ----------------------------------------------------------
> >> Esta lista é moderada de acordo com o previsto em
> >> http://www.listas-discussao.cjb.net
> >> ----------------------------------------------------------
> >> Servidor Newsgroup da lista: news.gmane.org
> >> Grupo: gmane.org.user-groups.programming.shell.brazil
> >>
> >> Links do Yahoo! Grupos
> >>
> >>
> >>
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]