[oracle.*]
significa "um dos caracteres o , r , a , c , l , e , . ou * ". Conseqüentemente, sua regex corresponderá apenas a algo como
lib+c.txt
e não o nome do arquivo real que você está passando. Se você remover o [
e ]
do regex, ele funcionará bem:
ls lib/oracle-11.2.0.3.0.txt | sed 's/lib.\(oracle.*\)\.txt//'
No entanto, uma maneira muito mais simples de fazer isso é
basename lib/oracle-11.2.0.3.0.txt .txt
ou, se você realmente quiser que o arquivo venha de stdin
:
ls lib/oracle-11.2.0.3.0.txt | xargs -I{} basename {} .txt