Ваш подход будет работать до тех пор, пока существует только один файл, соответствующий шаблону.bash сначала расширяет подстановочный знак, что приводит к вызову типа:
if [ -f /path/to/file*.txt ]
if [ -f /path/to/file1.txt ]
if [ -f /path/to/file1.txt /path/to/file2.txt ]
в зависимости от количества совпадений (0, 1, 2 соответственно).Чтобы проверить только существование, вы можете просто найти:
find /path/to -name 'file*.txt' | grep -q '.'