Verificando se existe um arquivo em um script

-5

Portanto, tenho um nome de arquivo bobv1.txt e não quero verificar manualmente se o bobv2.txt está no site. No site bobv1.txt será substituído por bobv2.txt. Eu fiz o download da página html e determinei o caminho completo do download do bobvX.txt e sei que o arquivo está no meu sistema de arquivos. Como posso saber se o arquivo já está no meu sistema de arquivos? Preciso que isso funcione para todas as versões subseqüentes.

    
por Ben Stumpf 10.10.2016 / 18:14

2 respostas

1

Se você precisa de um script de shell, você pode usar isto:

#!/bin/bash
file="$1"

if [ -f "$file" ]; then
    echo "File $file exists."
else
    echo "File $file does not exist."
fi

Você pode executá-lo assim:

bash test.sh /tmp/bobv2.txt
    
por pl_rock 10.10.2016 / 18:33
1

Existem várias maneiras de verificar se existe ou não um arquivo.

  • use o comando test (também conhecido como [ ) para fazer [ -f /path/to/file.txt ]
  • use o redirecionamento para tentar abrir o arquivo (note que isso não é efetivo se você não tiver permissões para ler o arquivo)

    $ bash -c 'if < /bin/echo ;then echo "exists" ; else echo "does not exist" ; fi'                                                                                       
    exists
    $ bash -c 'if < /bin/noexist ;then echo "exists" ; else echo "does not exist" ; fi'                                                                                    
    $ bash: /bin/noexist: No such file or directory
    does not exist
    

    ou com o silenciamento da mensagem de erro:

    $ 2>/dev/null < /etc/noexist || echo "nope"                                                                                                                            
    nope
    
  • use um programa externo, como stat

    $ if ! stat /etc/noexist 2> /dev/null; then echo "doesn't exist"; fi                                                                                                   
    doesn't exist
    
    Comando

    ou find :

    $ find /etc/passwd
    /etc/passwd
    
    $ find /etc/noexist
    find: ‘/etc/noexist’: No such file or directory
    
por Sergiy Kolodyazhnyy 31.10.2017 / 03:15