Простая строка оболочки (ksh, bash или zsh; не тире):
set -- *.png; printf '%s\n' "${@%.png}"
Простая функция (от No Extension):
ne(){ set -- *.png; printf '%s\n' "${@%.png}"; }
Или функция, удаляющая любое заданное расширение (по умолчанию png):
ne(){ ext=${1:-png}; set -- *."$ext"; printf '%s\n' "${@%.${ext}}"; }
Использовать как:
ne jpg
Если на выходе отображается звездочка *
, файл с таким расширением не существует.