저는 서로 다른 두 대의 컴퓨터에서 프로젝트를 진행하고 있습니다. 하나는 Mac OSX 10.8.3을 실행하고 다른 하나는 Red Hat Enterprise Linux를 실행하고 있습니다. 내 Mac에서는 다음을 수행할 수 있습니다.
vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
모든 것이 정상입니다. Linux 시스템에서는 실패합니다. 이 모든 것은 내가 예상한 대로 정확하게 작동합니다.
ls -R */*.@(h|cpp) */*/*.@(h|cpp)
echo $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
export myfilelist=$(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
echo $myfilelist
하지만
vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
손상된 파일 이름 세트를 생성합니다.
^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" [New DIRECTORY]
또는
:ls
1 %a "^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" line 1
2 "^[[00mevent_builder/include/EventBuilder.h^[[00m" line 0
이유를 아는 사람 있나요?
답변1
ls
출력 색상을 지정 하는 별칭(또는 함수)이 있습니다 . type -a ls
무엇을 드릴까요? 대신 사용
vim $(command ls ...)
하지만: 파싱되지 않음ls
노력하다
shopt -s nullglob globstar
printf "%s\n" **/*.{h,cpp}