간단한 Re로 OR을 표현하는 것에 대한 질문입니다.
글쓴이: aeronova / 작성시간: 화, 2005/07/12 - 9:17오전
안녕하세요,
bash shell에서 re를 이용해서 OR(|)을 사용하려고 했으나, 생각처럼 되지 않았습니다. 제가 하려고 했던것은 확장자가 eps나 pdf인 파일을 이동시키는 것이었습니다. 그래서 다음처럼
mv *.(eps|pdf) ../figures
하니까 에러가 나더군요. 아무래도 |을 사용하는데 문제가 있는듯 합니다. 음.. 어떻게 해야 확장자가 eps나 pdf인 파일을 옮길수 있을까요? 조언부탁드립니다. :)
Forums:
\ 를 붙여 보세요. <어떠한 역경에도 굴하지 않는 '하양
\ 를 붙여 보세요.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
그까이꺼 대애충..
mv *.{eps,pdf} ../figures
로 하면 안될까요?
AAAAA{aaa,bbb} 는
AAAAAaaa AAAAAbbb 로 해석됩니다.
엄밀히 OR 은 아닙니다.
Shell에서 쓸 수 있는 것은 filename expansion이지,
Shell에서 쓸 수 있는 것은 filename expansion이지, regular expression이 아닙니다. 즉, *, ?, [...]를 지원합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
덧붙여서, 좀 더 자세히 설명하면 "*.(eps|pdf)"는 filena
덧붙여서, 좀 더 자세히 설명하면 "*.(eps|pdf)"는 filename expansion이든, regular expression이든 올바른 표현이 아닙니다.
먼저 앞서 말한 대로 (, |, )는 filename expansion wildcard에 없는 문자입니다. 따라서 제대로 인식할 수 없습니다.
둘째, regular expression으로 표현할 경우, 올바른 expression은 ".*\.(eps\|pdf\)"입니다.
게다가 bash 자체에서 ( ... )는 subprocess를 만드는 명령이고, |는 파이프 명령이기 때문에, bash가 이를 해석하지 않도록 주의해야 합니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기