Como obtenho um nome de pasta usando um caractere curinga e verifico se ele é exclusivo

1

Eu quero mover uma série de arquivos para uma pasta diferente com base em sua ID, mas quero ter certeza de que a pasta para a qual estou movendo o arquivo exista e seja única

As pastas têm um ID correspondente como a primeira parte do nome, mas também têm uma descrição em seu nome (o ID deve ser único, mas eu quero me proteger contra essa exceção):

0123-app1
4567-app2
2020-app3
0123-shouldntbehere

Eu quero mover o arquivo com ID 4567 para o diretório 4567-app2 .

Como a descrição está no nome, eu preciso usar um curinga para encontrar a pasta correta. Agora eu tentei ecoar o nome em uma variável, mas isso não me ajuda a verificar se é único ou se existe.

APP_PATH='echo $APP_ID*'

O que sugeriria usar para encontrar a pasta correta e validar que ela é única?

Obrigado

    
por Bibz 04.08.2015 / 16:57

1 resposta

1

A maneira que eu implementei foi com uma declaração if com uma verificação de código de erro. O [ -d ...] gerará um erro se mais de um parâmetro (nome da pasta) for passado quando o caractere curinga for explodido ou se os arquivos não existirem. O ls no else nos permite saber qual caso nos trouxe até aqui (se existir várias pastas, o código de retorno será 0 )

if [ -d ${ID}* ] 2>/dev/null; then
    echo "Folder exists and is unique"
else
    ls ${ID}* >/dev/null 2>&1
    if [ $? -ne 0 ]; then
        echo "No folder exists starting with ${ID}"
    else
        echo "More than one folder starting with ${ID}"
    fi
fi
    
por 04.08.2015 / 20:30