Porque o extglob não funciona dessa maneira. Você deve colocar um dos caracteres modificadores no início da sua lista de padrões ( (txt|doc)
neste caso), como segue (de man bash
):
?(pattern-list)
Matches zero or one occurrence of the given patterns
*(pattern-list)
Matches zero or more occurrences of the given patterns
+(pattern-list)
Matches one or more occurrences of the given patterns
@(pattern-list)
Matches one of the given patterns
!(pattern-list)
Matches anything except one of the given patterns
Especificamente, ls *.*(txt|doc)
produz o comportamento que eu estou supondo que você deseja.