Pular para o conteúdo

Dúvida sobre shell script [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Dúvida sobre shell script [RESOLVIDO]

Enviado em 17/08/2013 - 20:04h

Boa noite galera VOL!!

Eu sei que é uma dúvida [*****] para alguns..., apenas aranho em shell...
seguinte, tenho uma estrutura de diretórios tipo:

diretorio1/PAINEL/script.sh
diretorio1/ALTA/DSC_1234.JPG
diretorio1/BAIXA/DSC_1234.JPG

considerando que em ALTA e BAIXA tenha vários arquivos.JPG
quero listar dessa forma, por ex:
DSC_3432
DSC_5234
DSC_7453

Queria saber a forma menos gambiarra, ou alguma forma melhor que essas...

aa=$(cd ../ALTA;ls *.JPG|sed 's/\.JPG//')

aa=$(ls ../ALTA/*.JPG|sed 's/\.\.\/ALTA\///;s/\.JPG//')


Atualmente está assim, mas ainda não mexi porque estou estudando shell/linux e reformulando
o "sisteminha"
aa=$(ls -l ../ALTA/*.JPG | awk {'print $9'} | cut -d / -f 3 | cut -d . -f 1)

Qualquer tipo de informação será bem vinda.





Responder tópico

2. Re: Dúvida sobre shell script [RESOLVIDO]

Enviado em 17/08/2013 - 21:19h


find diretorio1/ -iname *.jpg -type f -print0 | xargs -0 basename | rev | cut -d'.' -f2 | rev
Assim vai listar sem a extensao jpg e sem os caminhos de diretorio

3. Re: Dúvida sobre shell script [RESOLVIDO]

Enviado em 17/08/2013 - 21:32h

phoemur escreveu:


find diretorio1/ -iname *.jpg -type f -print0 | xargs -0 basename | rev | cut -d'.' -f2 | rev


Assim vai listar sem a extensao jpg e sem os caminhos de diretorio
Obrigado pela resposta amigo, minha principal dúvida é a seguinte:
será que dessa forma, usando o find, xargs, basename, rev, cut, não seria teoricamente mais lento que as formas que eu postei?
estou procurando a forma mas leve possível para esse feito, existem varias formas de fazer isso, gostaria de saber qual a melhor forma, para fins de estudo. Obrigado pela informação!

4. Re: Dúvida sobre shell script [RESOLVIDO]

Enviado em 17/08/2013 - 22:13h

Outra forma

ls -Rw1 | grep -i .*.JPG | sed 's/^\(.*\)\.[jpgJPG]\{3\}/\1/'
para saber a mais eficiente utilize o comando time, o que demorar menos é o que exigiu menos processamento, veja

time ls -Rw1 | grep -i .*.JPG | sed 's/^\(.*\)\.[jpgJPG]\{3\}/\1/'
time find diretorio1/ -iname *.jpg -type f -print0 | xargs -0 basename | rev | cut -d'.' -f2 | rev

5. Re: Dúvida sobre shell script [RESOLVIDO]

Enviado em 17/08/2013 - 22:34h

Via de regra, quanto menos pipes e subshell tiver mais rápido vai ser...
Outra coisa que ajuda é trocar awk por grep e sed pois são mais rápidos.

tenta assim também:

sed -n '/.*\.[jpgJPG]\{3\}/s/^\(.*\)\.[jpgJPG]\{3\}/\1/p' <(ls -Rw1 *.JPG)

6. Re: Dúvida sobre shell script [RESOLVIDO]

Enviado em 18/08/2013 - 06:00h

phoemur escreveu:

Via de regra, quanto menos pipes e subshell tiver mais rápido vai ser...
Outra coisa que ajuda é trocar awk por grep e sed pois são mais rápidos.

tenta assim também:

sed -n '/.*\.[jpgJPG]\{3\}/s/^\(.*\)\.[jpgJPG]\{3\}/\1/p' <(ls -Rw1 *.JPG)
Estou aprendendo sed e regexp, estou substituindo uma boa parte do meu programinha pra o uso do sed.

Obrigado pela ajuda!
Abraços! e até a próxima hehehe

7. Re: Dúvida sobre shell script [RESOLVIDO]

Enviado em 20/08/2013 - 18:21h

Marque o tópico como resolvido, assim evita o trastorno de outros usuários do VOL 'caçarem' perguntas do qual já tenham sido resolvidas.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder