2008-10-03 179 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

相关问题