2011-07-17 41 views
1

我與它的一些文件的Git倉庫的目錄,我們稱之爲matchdirgitignore匹配字符重複次數

$ ls matchdir 
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 
da39a3ee5e6b4b0d3255bfef95601890afd80709 
file.py 
someotherfile.txt 

我想補充匹配40個十六進制字符我.gitignore文件的文件。像matchdir/[0-9a-f]{32},但似乎沒有工作。有什麼辦法可以匹配.gitignore文件中某個特定字符的重複次數嗎?

+0

出於好奇,爲什麼被命名你的文件作爲SHA1-CHKSUM? 'gitignore(5)'和'fnmatch(3)'說你正在嘗試做的事情是不可能的。 –

+0

存儲庫是一個Web服務器,它執行一些處理並需要一個工作目錄。理想情況下,我會將工作目錄更改爲一個子目錄,然後與其匹配,但我現在無法更改該目錄。 – jterrace

回答

4
matchdir/???????????????????????????????????????? 

將匹配所有正好包含40個字母的文件。這不僅是十六進制字母,而且比任何長度的matchdir/*都好。鍵入40 ?在emacs下只需要3次擊鍵:C-4C-0

它現在很容易搜索,如果你想趕上僅十六進制數由[0-9a-f]更換?

matchdir/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f] 
+0

不漂亮,但我喜歡。這更準確地回答了原始問題,所以我接受了它。 – jterrace

+3

哈哈,古典UBE - 醜但有效。 +1 – Thilo

1

不是完全匹配的,但是如果只有這些文件沒有擴展名並沒有子目錄,一個解決方法可能是這樣的:

matchdir/* 
!matchdir/*.* 

忽略的所有文件,然後屏蔽那些點。

+0

不錯的建議,但它不適用於我,因爲有一些其他文件沒有擴展名。 – jterrace

+1

@jterrace - 如果沒有擴展名的「其他」文件是有限的,你能不能把它們列爲'!files'? –

+0

我結束了使用這個修改後的版本。謝謝@Thilo和@Fredrik – jterrace