2013-03-05 108 views
5

在git中我們可以使用*來指定文件名,比如*.jpg,*.*,但是目錄怎麼樣?Git路徑以匹配任何目錄名

是否有任何方法指定所有目錄?

這不起作用:

git rm firstdirectory/*/thirddirectory 

*不會做 「所有目錄」 的效果。

回答

3

你的命令不起作用,因爲你指定的目錄是git。殼牌做了正確的擴張,但最終的git接收git rm firstdirectory/somedir/thirddirectory,這混帳不喜歡(git rm預計文件)

爲了使您的指揮工作,使用-r標誌,那麼混帳接受目錄:

git rm -r firstdirectory/*/thirddirectory 
0

您描述的glob表達式擴展不是由git執行,而是由shell執行。如果您執行類似echo *的操作,您可以看到此內容。該命令接收一個文件名參數列表 - 不是帶星號的單個參數。

對於您的情況,find . -ipath可能是識別您需要的路徑最有用的方法。您可能需要添加一個-type d來獲取目錄。 find有許多選擇匹配對象的選項。然後,您可以將其填入xargs以與git一起使用。例如:

find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm