Você tem um alias (ou função) para ls
que colore a saída. O que type -a ls
dá a você? Em vez disso, use
vim $(command ls ...)
No entanto: não analisa ls
Tente
shopt -s nullglob globstar
printf "%s\n" **/*.{h,cpp}
Estou trabalhando em um projeto em duas máquinas diferentes - uma rodando o Mac OSX 10.8.3 e outra rodando o Red Hat Enterprise Linux. No meu Mac, posso fazer isso:
vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
e tudo funciona bem. Na caixa do Linux, ele falha. Todos estes funcionam exatamente como eu esperava:
ls -R */*.@(h|cpp) */*/*.@(h|cpp)
echo $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
export myfilelist=$(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
echo $myfilelist
Mas
vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
produz um conjunto de nomes de arquivos desconfigurados, por exemplo
^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" [New DIRECTORY]
ou
:ls
1 %a "^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" line 1
2 "^[[00mevent_builder/include/EventBuilder.h^[[00m" line 0
Alguém sabe por quê?
Você tem um alias (ou função) para ls
que colore a saída. O que type -a ls
dá a você? Em vez disso, use
vim $(command ls ...)
No entanto: não analisa ls
Tente
shopt -s nullglob globstar
printf "%s\n" **/*.{h,cpp}