Pular para o conteúdo

Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar
01 02

13. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:09h

pelo que percebi vc dá o comando shopt para saber se a opção extglob está habilitada, se estiver então o !(padrão) deveria funcionar, mais aqui só funciona pelo terminal.

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

14. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:09h

certamente o colega Paulo deve ter uma resposta melhor do que a minha..

enquanto isso, faz o teste de colocar no início do seu script
#!/bin/sh 

15. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:13h

O seu shell deve estar com o valor do extglob ligado porque a distribuição que você usa liga tal opção no momento em que você faz login. Já seu script, que não faz um login, não deve a estar ligando.

O que você tem de fazer é colocar o comando para ligá-la como parte do script, antes de tentar usar a operação controlada por tal opção.

16. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:15h

Também não deu:

./prog: 6: ./prog: Syntax error: "(" unexpected

17. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:20h

Deu certo, coloquei o comando "shopt -s extglob" na linha antes do comando citado e funcionou, só que tem de deixar esse no script para ele ligar a opção toda vez que for rodar o programa.

será que tem jeito de fazer isso em definitivo?

de qualquer forma muito obrigado, já resolveu, mesmo tendo que deixar uma linha a mais no script.

18. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:28h

Funcionou perfeitamente, vou usar esse caso precise dar o comando shopt toda vez que executar o script.

Muito obrigado.

19. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 13:29h

Ryuk escreveu:

Fiz uns testes aqui e realmente o comando quando está no script não funciona, curioso isso

pois é...

tb achei curioso...

Ryuk escreveu:

Use isso como alternativa:
find /diretorio -type f -not -name '*.srt' -delete 

https://www.cyberciti.biz/faq/linux-bash-delete-all-files-in-directory-except-few/

O colega Ryuk sempre tem na manga uns comandos bem enxuto..!



20. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 14:10h

Deveria ter jeito de escolher mais de uma "melhor resposta", muito obrigado pessoal.

21. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 14:12h

O find sugerido pelo Ryuk tem uma vantagem em relação ao globbing estendido, que é a de não expandir a lista de arquivos em memória.

Por outro lado, trata-se de um comando externo a mais, que implica a criação de um processo separado. Além disso, ela não é totalmente equivalente ao que o luizsouza99 estava fazendo, porque esse find opera recursivamente, e a expansão feita pelo shell, não. Isso pode ser muito perigoso, dependendo do diretório onde nosso amigo opera.

Para tornar o find não-recursivo, ou para limitar o nível de recursividade, pode-se usar a opção -maxdepth (por exemplo: “find . -maxdepth 1 -type f -not -iname \*.srt -delete”).

22. Re: Terminal reconhece mas no script não -> rm !(*.srt) [RESOLVIDO]

Enviado em 20/03/2018 - 14:14h

Tenho uma grande preocupação que o script delete algo que eu nao queira, vou usar essa opção sim.

muito obrigado.
01 02

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder