Script parou de funcionar sem motivo aparente

1. Script parou de funcionar sem motivo aparente

Luc
arksdf

(usa Manjaro Linux)

Enviado em 08/08/2020 - 11:06h

Eu estou usando o Syncthing para sincronizar pastas do meu celular no meu PC, e um shell script para organizar os arquivos em várias pastas
Aqui tem um trecho:

WPP="$HOME/Sync/Whatsapp/Media"
IMAGENS="$HOME/Imagens/WPP"
[[ -f $WPP/*Images/*.jpg ]] && mv $WPP/*Images/*.jpg $IMAGENS || echo "Nenhum jpg em $WPP"
[[ -f $WPP/*Images/*.jpeg ]] && mv $WPP/*Images/*.jpeg $IMAGENS || echo "Nenhum jpeg em $WPP"
[[ -f $WPP/*Images/Sent/*.jpg ]] && mv $WPP/*Images/Sent/*.jpg $IMAGENS || echo "Nenhum jpg em $WPP"
[[ -f $WPP/*Images/Sent/*.jpeg ]] && mv $WPP/*Images/Sent/*.jpeg $IMAGENS || echo "Nenhum jpeg em $WPP"


Eu usei esse script uma vez e funcionou sem problemas, mas eu usei ele novamente e ele simplesmente não funciona mais.
Eu já verifiquei que o caminho das pastas está certo.



  


2. Re: Script parou de funcionar sem motivo aparente

Mauricio Ferrari
mauricio123

(usa Slackware)

Enviado em 08/08/2020 - 14:13h


arksdf escreveu:

Eu estou usando o Syncthing para sincronizar pastas do meu celular no meu PC, e um shell script para organizar os arquivos em várias pastas
Aqui tem um trecho:

WPP="$HOME/Sync/Whatsapp/Media"
IMAGENS="$HOME/Imagens/WPP"
[[ -f $WPP/*Images/*.jpg ]] && mv $WPP/*Images/*.jpg $IMAGENS || echo "Nenhum jpg em $WPP"
[[ -f $WPP/*Images/*.jpeg ]] && mv $WPP/*Images/*.jpeg $IMAGENS || echo "Nenhum jpeg em $WPP"
[[ -f $WPP/*Images/Sent/*.jpg ]] && mv $WPP/*Images/Sent/*.jpg $IMAGENS || echo "Nenhum jpg em $WPP"
[[ -f $WPP/*Images/Sent/*.jpeg ]] && mv $WPP/*Images/Sent/*.jpeg $IMAGENS || echo "Nenhum jpeg em $WPP"


Eu usei esse script uma vez e funcionou sem problemas, mas eu usei ele novamente e ele simplesmente não funciona mais.
Eu já verifiquei que o caminho das pastas está certo.


É porque depois do && não executa mais nada e isso inclui o que está depois do ||.

WPP="$HOME/Sync/Whatsapp/Media"
IMAGENS="$HOME/Imagens/WPP"
[[ -f $WPP/*Images/*.jpg ]] && mv $WPP/*Images/*.jpg $IMAGENS
[[ -f $WPP/*Images/*.jpeg ]] && mv $WPP/*Images/*.jpeg $IMAGENS
[[ -f $WPP/*Images/Sent/*.jpg ]] && mv $WPP/*Images/Sent/*.jpg $IMAGENS
[[ -f $WPP/*Images/Sent/*.jpeg ]] && mv $WPP/*Images/Sent/*.jpeg $IMAGENS
[[ ! `ls -R $WPP/*Images/*.jp*` ]] && [[ ! `ls -R $WPP/*Images/Sent/*.jp*` ]] && echo "Nenhuma imagem em $WPP"

Vê se assim funciona.

___________________________________
Conhecimento não se Leva para o Túmulo.


3. Re: Script parou de funcionar sem motivo aparente

logas loan
antiquo

(usa Outra)

Enviado em 08/08/2020 - 15:12h

Deve ter funcionado quando tinha apenas UM jpeg dentro do dir de testes.

Globs não devem ser incluidos dentro do test, se houver mais de um vai falhar, ou se houver caracteres em branco (espaço), tb.

Pode usar o failglob do bash, assim se não houver um glob .jp?g no diretório, vai acusar erro.
Mesmo sem ele, acho que o mv acusaria erro se o glob fosse enviado literalmente (quando não há expansão do glob).


WPP="$HOME/Sync/Whatsapp/Media"
IMAGENS="$HOME/Imagens/WPP"

shopt -s failglob

for d in "$WPP"/*Images/ "$WPP"/*Images/Sent/
do
mv -- "$d"/*.jp*g "$IMAGENS"
done


ops, arrumei o ex.. se houver um arquivo chamado yyyy.jpxerrog vai ser incluido pelo glob. ou vc pode usar dois globs: ` mv -- "$d"/*.jpg "$d"/*.jpeg "$IMAGENS" `
mas daí usaria o `shopt -s nullgob ` para não dar muitos erros de expansão..

ou pensando bem, se vc não precisar de controle granular e não forem milhões de imagens:

mv -v -- "$WPP"/*Images/{,Sent/}*.jp*g "$IMAGENS"




4. Re: Script parou de funcionar sem motivo aparente

Mauricio Ferrari
mauricio123

(usa Slackware)

Enviado em 08/08/2020 - 17:25h

mv -v -- "$WPP"/*Images/{,Sent/}*.jp*g "$IMAGENS" 

É acho que funciona também. Boa sugestão.

___________________________________
Conhecimento não se Leva para o Túmulo.


5. Re: Script parou de funcionar sem motivo aparente

Mauricio Ferrari
mauricio123

(usa Slackware)

Enviado em 08/08/2020 - 18:15h

shopt -s failglob 


Gostei dessa parada
___________________________________
Conhecimento não se Leva para o Túmulo.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts