2008-10-03 183 views
0

我有一個項目的多個分支簽出,每個分支在他們自己的目錄下(非常標準)。如何將文件從一個代碼項目複製到另一個代碼

的src/BRANCH1 /一些/代碼/目錄 的src/BRANCH2 /一些/代碼/目錄

我經常發現自己想選擇的文件從一個分支複製到另一個。一個例子是複製cvsignore文件或intellij模塊文件。我試圖做的僞命令是「將branch1下匹配PATTERN的所有文件複製到branch2,保留複製文件的相對路徑」。

This question看起來接近我在找什麼,但我需要一個OS X/linux/unix解決方案。

回答

1

使用 「CP -r --parents」 命令像這樣,在BRANCH1目錄

find . -name ".cvsignore" -exec cp -r --parents {} ../branch2/ \; 

OR

當src /目錄,運行此腳本。如果需要,您可以從命令行參數獲取變量。

SOURCE="branch1/" 
TARGET="branch2/" 
PATTERN=".cvsignore" 

find $SOURCE -name $PATTERN | while read f ; 
do 
     FILEPATH=$(dirname $f | cut -d'/' -f2-) 
     FILENAME=$(basename $f) 
     DESTPATH=$TARGET/$FILEPATH; 
     if [ ! -d $DESTPATH ] 
       then mkdir -p $DESTPATH 
     fi 
     cp $f $DESTPATH 
done 
+0

謝謝。第一個解決方案中的--parents標誌在OS X中似乎不受支持,而且我也無法在任何手冊頁中找到它。第二個解決方案工作很好, – jon 2008-10-06 14:24:57

相關問題