Confirmação da existência de arquivos [RESOLVIDO]

1. Confirmação da existência de arquivos [RESOLVIDO]

Pedro Lima
pedrolima

(usa Ubuntu)

Enviado em 05/10/2015 - 09:16h

Amigos, bom dia. Estou iniciando na criação de scripts pro Linux em Shell e estou tendo dificuldade com uma validação em particular.

Eu tenho uma pasta com arquivos TXT que chegam por FTP na mesma. Eu rodo um script que só deve ser executado caso a pasta tenha esses arquivos, caso não tenha o script pode ser finalizado pois não é necessário.

O nome desses arquivos é GoiaXXXX aonde XXXX é uma sequencia de 4 números aleatórios e que variam de acordo com o arquivo recebido.

O teste que estou executando é:

if [ -e Goia* ] 


O problema que quando rodo o script ele da erro na linha supracitada: line 10: [: too many arguments

O erro ocorre por ele encontrar varios arquivos "GoiaXXXX" qual comando devo usar para realizar esse teste?

Obrigado.


  


2. MELHOR RESPOSTA

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 05/10/2015 - 12:59h

Olá,

Pra economizar processamento, dá pra fazer assim tbm:


if [ $(ls Goia* > /dev/null; echo $?) -eq 0 ]
then
echo " Arquivo existe"
else
echo " Arquivo não existe"
fi


---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

3. Re: Confirmação da existência de arquivos [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 05/10/2015 - 09:32h

pedrolima escreveu:

Amigos, bom dia. Estou iniciando na criação de scripts pro Linux em Shell e estou tendo dificuldade com uma validação em particular.

Eu tenho uma pasta com arquivos TXT que chegam por FTP na mesma. Eu rodo um script que só deve ser executado caso a pasta tenha esses arquivos, caso não tenha o script pode ser finalizado pois não é necessário.

O nome desses arquivos é GoiaXXXX aonde XXXX é uma sequencia de 4 números aleatórios e que variam de acordo com o arquivo recebido.

O teste que estou executando é:

if [ -e Goia* ] 


O problema que quando rodo o script ele da erro na linha supracitada: line 10: [: too many arguments

O erro ocorre por ele encontrar varios arquivos "GoiaXXXX" qual comando devo usar para realizar esse teste?

Obrigado.


Tu pode usar um regex para validar esses arquivos, por exemplo:

...
...
for arquivos in diretorio/*.txt; do
if [[ $arquivos =~ Goia.*\.txt$ ]]; then
# coloque aqui o procedimento para realizar com esses arquivos
else
# coloque aqui o que fazer com os outros arquivos
fi
done





4. Re: Confirmação da existência de arquivos [RESOLVIDO]

Pedro Lima
pedrolima

(usa Ubuntu)

Enviado em 05/10/2015 - 10:36h

ru4n escreveu:

pedrolima escreveu:

Amigos, bom dia. Estou iniciando na criação de scripts pro Linux em Shell e estou tendo dificuldade com uma validação em particular.

Eu tenho uma pasta com arquivos TXT que chegam por FTP na mesma. Eu rodo um script que só deve ser executado caso a pasta tenha esses arquivos, caso não tenha o script pode ser finalizado pois não é necessário.

O nome desses arquivos é GoiaXXXX aonde XXXX é uma sequencia de 4 números aleatórios e que variam de acordo com o arquivo recebido.

O teste que estou executando é:

if [ -e Goia* ] 


O problema que quando rodo o script ele da erro na linha supracitada: line 10: [: too many arguments

O erro ocorre por ele encontrar varios arquivos "GoiaXXXX" qual comando devo usar para realizar esse teste?

Obrigado.


Tu pode usar um regex para validar esses arquivos, por exemplo:

...
...
for arquivos in diretorio/*.txt; do
if [[ $arquivos =~ Goia.*\.txt$ ]]; then
# coloque aqui o procedimento para realizar com esses arquivos
else
# coloque aqui o que fazer com os outros arquivos
fi
done





Obrigado pela ajuda!

Funcionou sim, porem por algum motivo o if não esta filtrando apenas os arquivos GoiaXXXX.txt , ele esta aplicando a mesma rega para todos os arquivos ".txt" , eu contornei esse problema não gerando mais nenhum txt na pasta, mas de toda forma saberia me dizer o motivo?

Obrigado novamente.



5. Re: Confirmação da existência de arquivos [RESOLVIDO]

Pedro Lima
pedrolima

(usa Ubuntu)

Enviado em 05/10/2015 - 10:53h


Resolvi o problema usando ao inves de

for arquivos in diretorio/*.txt; do
if [[ $arquivos =~ Goia.*\.txt$ ]]; then



Removi o if e apenas especifiquei no for pois os outros arquivos não precisam ser tratados:

for arquivos in diretorio/Goia*.txt; do 



Obrigado!


6. Re: Confirmação da existência de arquivos [RESOLVIDO]

Pedro Lima
pedrolima

(usa Ubuntu)

Enviado em 06/10/2015 - 00:53h

tonyhts escreveu:

Olá,

Pra economizar processamento, dá pra fazer assim tbm:


if [ $(ls Goia* > /dev/null; echo $?) -eq 0 ]
then
echo " Arquivo existe"
else
echo " Arquivo não existe"
fi


---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


Ola Tony, obrigado pela ajuda. Como estou começando, muitos comandos ainda me são desconhecidos. Se for possível, conseguiria me descrever mais ou menos o que e como este código esta testando?

Att,








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts