2013-05-15 7 views

답변

1

find으로 제외하는 것이 좋습니다. Birei의 답변을 참조하십시오.

grep 패턴의 문제점은 쉘 glob로 지정했기 때문입니다. 기본적으로 grep은 기본 정규식 (BRE)을 첫 번째 인수로 사용합니다. 따라서 grep 패턴을 .*\.\(ori\|pte\|uh\|mna\)$으로 바꾸면 제대로 작동합니다. 또는 확장 정규 표현식 (ERE)을 사용하려면 -E을 사용하십시오. 그렇다면 다음과 같은 예외를 표현할 수 있습니다 : .*\.(ori|pte|uh|mna)$.

전체 명령 줄 :

find . -type f | grep -vE '.*\.(ori|pte|uh|mna)$' 
+0

, 내가 왜 궁금해. grep은 "파일 이름 만"하지 않습니까? – Sassinak

+0

@Sassinak : 정확히 어떤 명령을 실행 했습니까? 모든'grep'은'find'에 의해 나열된 파일 이름입니다. 따라서 "파일 이름 만"의존성이 없습니다. 그런데, 당신은 줄의 끝을 일치시키기를 원합니다, 그래서 패턴들은'$'으로 고정되어야합니다, 나는 그 것을 답에 추가 할 것입니다. – Thor

+0

좋아, 변경 사항을 추가하고 완벽하게 작동합니다. 나는 "짧은"이기 때문에 이것을 선호한다. 그러나 위의 대답은 잘 작동했다. 감사! – Sassinak

1

한 가지 방법 :이 작동하지 않았다

find path/to/project *.* -type f ! \(-name '*.ori' -o -name '*.pte' -o -name '*.uh' -o -name '*.mna' \) 
    | xargs dos2unix 2> log.txt 
+0

감사합니다. 나는 "*. *"을 편집했다. – Sassinak