Como verificar se existe um arquivo?

0

Eu tenho um loop for que descompacta todos os .zip nesse diretório. Eu quero verificar se o arquivo descompactado já existe e fazer a descompactação apenas para os arquivos compactados.

Aqui está o código sem nenhuma instrução if:

for i in 'cat zipfiles.txt'; do
    output_dir=$(dirname $i)
    unzip -d $output_dir $i
done  

zipfiles.txt é como:

./CSAN/S1A.zip 
./MEZO/S1B.zip

saída é

./CSAN/S1A.SAFE 
./MEZO/S1B.SAFE

Eu tentei adicionar um if loop, mas ele ainda está perguntando se eu quero substituir o arquivo já existente.

for i in 'cat zipfiles.txt'; do
    file="${dir%/}.SAFE"
    if [ -e "$file" ]
    then
        echo "It exists"
    else
        output_dir=$(dirname $i)
        unzip -d $output_dir $i
    fi
done

Qual é a boa solução?

    
por Krsztr 11.01.2018 / 14:06

2 respostas

2

Use a opção -n . Na página de manual do unzip:

% bl0ck_qu0te%     
por Elder Geek 12.01.2018 / 01:16
0

Ok, Eu encontrei a solução certa:

for i in 'cat zipfiles.txt'; do
    output_dir=$(dirname $i)
    echo $output_dir
    file="${i/zip/SAFE}"
    echo $file
    if [ -e "$file" ]
    then
        echo "It exists"
    else
        unzip -d $output_dir $i
    fi
done
    
por Krsztr 11.01.2018 / 14:49