2012-07-24 4 views
0

나는 와일드 카드가 나에게 일어날 때까지 이해했다고 생각했다. 본질적으로, 나는 .gitignore으로 명명되지 않은 모든 파일을 반환하는 와일드 카드 패턴을 찾고 있습니다.* .abc가 .abc라는 파일과 일치하지 않는 이유는 무엇입니까?

ls *[!{gitignore}] 
이 작동하는 경우

정말 내가 표현을 부정하고 .gitignore라는 이름의 파일을 반환하는 경우 볼 수있을 줄, 유효성을 검사하려면 (실제로 : 내가 낼 수 있었기 때문에 모든 경우에 작동하는 것 같다하는이, 함께했다 gitignore으로 끝나는 파일이므로 1.gitignore도 반환해야합니다.) 그 효과에, 나는 부정 표현이 될 것이라고 생각 : (이 1.gitignore라는 이름의 파일을 반환하지만)

ls *[{gitignore}]  

그러나이 표현은 .gitignore라는 이름의 파일을 반환하지 않습니다.

기본적으로 내 질문에, 단순화 한 후, 아래로 비등 :

하지 않는 이유는 * 내가로부터 걸릴 수 있다고 생각

이 .abc라는 이름의 파일과 일치 .ABC 그곳에.

PS :

  • 내가 특정 폴더에 .gitignore를 제외하고, 내가 모든 파일을 무시하는 것이라고 .gitignore 등에 절을 추가하고 싶었 나는 맥 OSX 라이온 (10.7.4) 작업입니다

    1. . 그래서 .gitignore 파일에 *을 추가했습니다. 난 당신이 배쉬를 사용하는 가정 Use the asterisk character (*) to represent zero or more characters.
  • 답변

    3

    - 결과는 자식 내가 구글에 만들어 놓은 수많은 검색에서 .gitignore :

  • 무시하고 결국였다. Bash manual 사람 :

    패턴은 파일 이름의 시작 부분에서 파일 이름 확장, 문자에 사용되는 즉시 쉘 옵션 dotglob이 설정되어 있지 않으면 슬래시가 명시 적으로 일치해야 따르고

    '.'.

    .gitignore 패턴 그러나 다르게 처리되어 패턴 와일드 카드되지 않습니다

    그렇지 않으면, 자식 (3) FNM_PATHNAME 플래그으로 fnmatch 의해 소비에 적합한 쉘 글로브로 패턴 처리 경로 이름에 /와 일치합니다.

    fnmatch(3) docs에 따르면, 선도적 인 점은 FNM_PERIOD 플래그가 .gitignore 일치하는 것 gitignore 패턴으로 너무 *gitignore, 설정되어있는 경우 만 명시 적으로 일치되어야한다.

    더 쉬운 방법이 있습니다..gitignore.gitignore를 제외한 모든 것을 무시하게하려면 :

    * 
    !.gitignore 
    
  • +0

    흠, 저를 올바른 방향으로 가르쳐 주셔서 감사합니다. 'dotglob '에 대한 google은'bash does not glob dot-files'이라는 문으로 생겼습니다. 고마워, 너는 남자 야! 그리고 네, 배시 셸을 사용하고 있습니다 (언급하는 것을 잊어서 죄송합니다). –

    2

    당신이 제외한 모든 에게 gitignore 파일을 무시 파일로 사용하려면 다음

    * 
    !.gitignore 
    

    라인으로 해석됩니다 느낌표로 시작 예외.

    관련 문제