BASH: Extrahieren einer Teilzeichenfolge, die von einem bestimmten Text umgeben ist

Ich versuche, Zahlen aus Dateinamen zu extrahieren, die einem bestimmten Muster folgen:

file-8923489_something.txt
another_file-8923489_something.txt
some-other_file-8923489_something.txt

Ich möchte die Zahl extrahieren, die sich zwischen dem Text "file-" und "_something" befindet und mit den obigen 3 Dateinamen funktioniert.

Was ist der beste Weg, um dies zu tun?

Ist dies nur mit Operatoren wie ## und %% möglich? Wie wäre es mit so etwas wie:

filename=file-8923489_something.txt
file=${${filename##*file}%%_something}}

Es hat jedoch nicht wie erwartet funktioniert.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage