0

これが私に起こるまで、私はワイルドカードを理解したと思いました。基本的に、名前が付けられていないすべてのファイルを返すワイルドカードパターンを探しています.gitignore。私はこれを思いついた、それは私が思いつくことができるすべての場合にうまくいくようだ:

ls *[!{gitignore}]

これが機能するかどうかを実際に検証するために、式を否定して、名前の付いたファイルが返されるかどうかを確認します.gitignore(実際には、gitignore;で終わるファイル1.gitignoreも返されるはずです)。その趣旨で、否定された表現は次のようになると思いました。

ls *[{gitignore}]    

ただし、この式はという名前のファイルを返しません.gitignore(ただし、という名前のファイルを返します1.gitignore)。

基本的に、私の質問は、単純化した後、要約すると次のようになります。

*.abcが.abcという名前のファイルと一致しないのはなぜですか

私はそこからそれを取ることができると思います。

PS:

  1. 私はMacOSXLion(10.7.4)に取り組んでいます
  2. 特定のフォルダ.gitignoreを除くすべてのファイルを無視するように句を追加したかったのです。.gitignoreだから私はファイルに追加すること*になった。.gitignore結果は、gitが無視することになった.gitignore:)
  3. 私がグーグルで行った数多くの検索から-Use the asterisk character (*) to represent zero or more characters.
4

2 に答える 2

3

Bashを使用していると思います。Bashマニュアルから:

パターンがファイル名の展開に使用される場合、文字「。」シェルオプションdotglobが設定されていない限り、ファイル名の先頭またはスラッシュの直後は明示的に一致する必要があります。

ただし、.gitignoreパターンは異なる方法で処理されます。

それ以外の場合、gitはパターンをFNM_PATHNAMEフラグを指定したfnmatch(3)による消費に適したシェルグロブとして扱います。パターン内のワイルドカードはパス名内の/と一致しません。

fnmatch(3)のドキュメントによると、gitignoreパターンが一致するFNM_PERIODように、フラグが設定されている場合にのみ先頭のドットを明示的に一致させる必要があります。*gitignore.gitignore

ただし、これを実現するためのより簡単な方法があります。を.gitignore除くすべてを無視するために.gitignore

*
!.gitignore
于 2012-07-24T17:29:06.463 に答える
2

ファイル以外のすべてを無視する場合はgitignore、これをファイルとして使用します。

*
!.gitignore

感嘆符で始まる行は例外として解釈されます。

于 2012-07-24T17:31:06.707 に答える