como verificar se o arquivo existe com base no nome parcial do arquivo [duplicado]

0

a maneira de verificar o arquivo como todos sabem é assim

[[ -f  /var/scripts_home/orig_create_DB_files_1.46.38 ]] && echo file exist

mas como verificar se o arquivo existe no arquivo do caso contém nome como - " create_DB_files "

Eu tento isso (mas não funciona)

[[ -f  /var/scripts_home/*create_DB_files* ]] && echo file exist

ou

   partial_file_name=create_DB_files

   [[ -f  /var/scripts_home/*$partial_file_name* ]] && echo file exist
    
por yael 17.01.2018 / 07:47

2 respostas

2
for name in *create_DB_files*; do
    if [ -f "$name" ]; then
        printf 'at least one file exists (%s)\n' "$name"
        break
    fi
done

Isto é, combine os nomes relevantes e verifique se algum deles é um arquivo regular (o loop sairá assim que um for encontrado).

    
por 17.01.2018 / 07:52
1

Isso testará se um arquivo existe baseado em um nome parcial com toda a flexibilidade para localizar arquivos que find permite:

find . -name '*create_DB_files*' -printf 1 -quit | grep -q 1

Pode-se querer considerar adicionar -type f para restringir correspondências a arquivos regulares ou -mtime se desejar corresponder na data do arquivo ou -maxdepth 1 para restringir a pesquisa ao diretório atual, etc.

Os itens acima podem ser incorporados em um comando if da seguinte forma:

if find . -name '*create_DB_files*' -printf 1 -quit | grep -q 1
then
    echo found
else
    echo Not found
fi
    
por 17.01.2018 / 07:56