2012-12-20 2 views
0

나는 찾기가 새롭고 정규 표현식은 항상 저에게 까다로운 작업이었습니다. 나는 누군가가 빨리 저를 위해이 문제를 해결 할 수 있습니다 희망 어쩌면 이것이 내가 그것을해야한다고 생각하는 것이 (특정 유형의 파일을 제외 목표입니다) 일을하지 않는 이유를 말해 오전 : 사전에정규식을 사용하여 찾기에서 파일 유형 제외

find . -type f \(-name "*" ! -name "*\.(vm | jar | class | htm | html | jpg | gif)$" \) 

감사합니다.

+0

왜 이름이 "*"이어서 두 번째 패턴이 좋을까요? -not -name "* \. (vm ..."충분하지 않음 –

+0

http://stackoverflow.com/questions/6844785/how-to-use-regex-with-find-command –

답변

2

내가 더 잘 알고있는, 당신이 당신이 당신의 발현에있는 공백을 제거해야합니다 생각 정규식 측면에서, 어쨌든 ...

을 보이는

내가 명령 자체의 유효성을 보장하지 않습니다 ...

+0

100 % 정확하지 않음 , file :'handjar'에 대해서는 확장자는 없지만 여전히 일치 할 것입니다. – Tomek

+0

좋은 말로, 편집합니다 ... 고마워요. 'find'가 어디서든 전체 일치 또는 일치를하는지조차 모르겠습니다. 첫 번째 경우에는, 너의 대답은 더 좋다. – PhiLho

+0

그래, 그게 말이 되네, 고마워. – Nik

2

나는 find 명령 구문에 익숙하지 해요,하지만 당신이 필요 주어진 확장자를 가진 파일에 맞게 :

".*\.(vm|jar|class|htm|html|jpg|gif)$" 

제거 된 공간과 시작 부분에 점을 추가했다.

"\.(vm|jar|class|html?|jpg|gif)$" 
: 문제는 유닉스 셸에 대한처럼
1

나는 그래서 당신의 여분의 "-name"* "",는 기본적으로 모든 이름을 찾습니다 찾을 확신 해요 여기서 필요하지 않습니다. 당신은 당신이 찾고 있던 답을 찾은 것 같은 정규 표현식 측면에서

, 그것은 보이는,하지만 당신은 여전히 ​​또는 플래그가 찾을 것을 알고 할 수 있습니다 (- 또는 또는 -o) 만들 수 일 정규 표현식 당신을 일으키는 경우 쉽게 문제 : 단점에

find . -type f ! \(-name "*.vm" -o -name "*.jar" -o -name ".class" \) 

, 그것은

man find에서 살펴보고 기억 ... 분명히 이상 작성하는 방법입니다.

행운을 빌어 요

관련 문제