2012-05-21 84 views
1

我需要得到的東西與殼襯裏左右被複制一些幫助..自動複製文件

例如

cp QA/Release/apps/offline/config/logging.yml  Production/Release/apps/offline/config/logging.yml 
cp QA/Release/config/nc_databases_dev.yml   Production/Release/config/nc_databases_dev.yml 
cp QA/Release/config/nc_databases_live.yml  Production/Release/config/nc_databases_live.yml 
cp QA/Release/config/nc_databases_live_dev.yml Production/Release/config/nc_databases_live_dev.yml 
cp QA/Release/config/nc_databases_test.yml  Production/Release/config/nc_databases_test.yml 
cp QA/Release/config/nc_databases_va.yml   Production/Release/config/nc_databases_va.yml 

,如果你看到我複製QA /文件..到生產/ files ..只是前2個目錄將QA更改爲Production,其餘路徑保持不變。

我能走這麼遠,寫文件名的文件,並讀取它,然後

for i in `cat file ` ; do cp $i to ????? ; done 

拷貝複製$ i到生產,因爲它讀取每個源代碼行,但只需要刪除QA /因爲它在飛行副本..

感謝

+2

你複製在'QA /發行/ config'夾中的一切到'製作/發行/ config'文件夾?或者有些事情你不需要複製? –

+0

如果你刪除了QA/start,像'cp QA/$ i Production/$ i'這樣的應用程序就可以做到。 – bdecaf

+0

「外殼襯裏」是否應該是「外殼單線」? –

回答

1

你看看到rsync?這樣的東西應該做的東西:

rsync -a --include '*.yml' QA/Release Production/Release/ 

編輯:測試並更正rsync線。

此命令將複製下,尊重模式「* .yml」到大生產/釋放樹中的QA /發佈目錄中找到的一切。一個QA/Release/x/y/z/file.yml將在Production/Release/x/y/z/file.yml

+0

rsync的無助,因爲源路徑更改像QA/DIR/DIR1 /文件製作/ DIR/DIR1 /文件和QA/DIR/DIR1 /文件1生產/ DIR/DIR1 /文件1或QA/DIR/DIR2 /文件1生產/ DIR/DIR2 /文件1 ... – Ganaiwali

+0

@Ganaiwali:我不明白的變化是如何發生的,你能不能給我們一些更多的例子嗎? –

+0

@Brian是我將QA/Release/config文件夾中的文件複製到Production/Release/config文件夾。另外,源都會像QA /目錄/文件製作/目錄/文件中的一些事情,或者它可以改變爲QA/DIR/XYZ生產/ DIR/XYZ – Ganaiwali

0

複製這不只是一樣複製目錄和重命名呢?

cp -r QA Production 
+0

若目標目錄已經存在。 –

+0

MV重命名,因爲我記得 –

0
while read -r name 
do 
    cp "$name" "PRODUCTION/${name#QA/}" 
done < file 

作爲一個班輪:

while read -r name; do cp "$name" "PRODUCTION/${name#QA/}"; done < file 
+0

的作品驚人的!謝謝大家! – Ganaiwali