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.. 复制到 Production/files.. 只是前 2 个目录将 QA 更改为 Production,其余路径保持不变。

我可以做到这一点,将文件名写入文件并读取它,然后复制

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

复制 $i 到生产,因为它读取每个源代码行,但只需要删除 QA/ 因为它在运行中复制..

谢谢

4

3 回答 3

1

你看过rsync吗?像这样的东西应该做的事情:

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

编辑:测试并更正 rsync 行。

此命令会将在 QA/Release 目录下找到的所有符合模式 '*.yml' 的内容复制到 Porduction/Release 树中。AQA/Release/x/y/z/file.yml将被复制到Production/Release/x/y/z/file.yml

于 2012-05-21T12:24:07.807 回答
0

这与复制目录并重命名它不一样吗?

cp -r QA Production
于 2012-05-21T12:31:42.617 回答
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
于 2012-05-21T13:43:00.660 回答