Com sed, você pode tentar
sed -E 's/(.*)_.*//'
exemplo, copie e cole em um prompt de comando
% cat << EOF | sed -E 's/(.*)_.*//'
abc_def_12345.zip
abc_123.zip
abc_def_ghi_3432.zip
EOF
saída
abc_def
abc
abc_def_ghi
note, este comando deixa a impressão automática de sed
do espaço de padrão no lugar, o que significa que quaisquer outras linhas que não correspondam ao padrão (ou seja, não contenham _
, farão parte Se você não quiser, você pode usar
sed -n -E 's/(.*)_.*//p'