Como eu verifico se um ou ambos os arquivos existem?

0

Como posso verificar, no shell script, se algum de dois arquivos existe?

Não importa qual dos dois arquivos existe ou se os dois existem.

    
por ovuvuvew 23.12.2016 / 21:20

3 respostas

2
if test -e file1 || test -e file2; then
  # At least one of file1 or file2 exists
  ...
else
  # Neither file1 nor file2 exists
fi

test -e verifica a mera existência. Você pode querer um teste mais específico, como -b (existe e é especial de bloco), -c (existe e é caractere especial), -d (existe e é um diretório), -f (existe e é um arquivo normal) etc.

    
por 23.12.2016 / 21:26
3

Ambas as outras respostas executam test duas vezes. Enquanto isso vai funcionar, tem a ineficiência de dois garfos de processo. Você pode obter o "ou" feito em um único teste com:

if [ -e file1 -o -e file2 ]; then ...

Qual será um pouco mais eficiente.

    
por 25.12.2016 / 02:21
0

Embora /bin/test e a página de manual para test não nomeiem, você pode usar test -a /path/to/file para determinar se existe um arquivo.

if [ -a file1 ] || [ -a file2 ]; then echo "I found something"; fi

|| é efetivamente um OR lógico.

    
por 23.12.2016 / 21:24