Dúvida sobre shell script [RESOLVIDO]

1. Dúvida sobre shell script [RESOLVIDO]

Alan Victor
alanvictorjp

(usa Debian)

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.







  


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

Fernando
phoemur

(usa Debian)

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]

Alan Victor
alanvictorjp

(usa Debian)

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]

Fernando
phoemur

(usa Debian)

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]

Fernando
phoemur

(usa Debian)

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]

Alan Victor
alanvictorjp

(usa Debian)

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]

Alexandre Gonçalves Monteiro da Silva
alexandregms

(usa Ubuntu)

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.



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts