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: Alysson Gonçalves de Azevedo
Subject: Re: [shell-script] Descompactar arquivos pelo Nautilus
Date: Sun, 15 Jan 2012 21:09:42 -0200

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, já
>> 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]



reply via email to

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