basename
может удалить расширение для вас.
find . -type f -name '*.sh' -exec basename {} .sh \;
Обратите внимание, что это будет работать для всех допустимых имен файлов, а не только тех, которые не содержат перевода строки.
Если ваша команда basename
поддерживает это, вы можете использовать опцию -s
, чтобы свести к минимуму количество необходимых вызовов на basename
.
find . -type f -name '*.sh' -exec basename -s .sh {} +
Это позволяет нескольким именам файлов передаваться на каждый вызов basename
.