在git中我們可以使用*
來指定文件名,比如*.jpg
,*.*
,但是目錄怎麼樣?Git路徑以匹配任何目錄名
是否有任何方法指定所有目錄?
這不起作用:
git rm firstdirectory/*/thirddirectory
的*
不會做 「所有目錄」 的效果。
在git中我們可以使用*
來指定文件名,比如*.jpg
,*.*
,但是目錄怎麼樣?Git路徑以匹配任何目錄名
是否有任何方法指定所有目錄?
這不起作用:
git rm firstdirectory/*/thirddirectory
的*
不會做 「所有目錄」 的效果。
你的命令不起作用,因爲你指定的目錄是git。殼牌做了正確的擴張,但最終的git接收git rm firstdirectory/somedir/thirddirectory
,這混帳不喜歡(git rm
預計文件)
爲了使您的指揮工作,使用-r
標誌,那麼混帳接受目錄:
git rm -r firstdirectory/*/thirddirectory
您描述的glob表達式擴展不是由git執行,而是由shell執行。如果您執行類似echo *
的操作,您可以看到此內容。該命令接收一個文件名參數列表 - 不是帶星號的單個參數。
對於您的情況,find . -ipath
可能是識別您需要的路徑最有用的方法。您可能需要添加一個-type d
來獲取目錄。 find有許多選擇匹配對象的選項。然後,您可以將其填入xargs
以與git
一起使用。例如:
find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm