自动复制文件

时间:2012-05-21 12:18:36

标签: linux bash shell

我需要一些帮助才能用shell衬里复制一些东西..

示例

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 /文件复制到生产/文件..只有前两个目录将QA更改为生产,其余路径保持不变。

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

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

将$ i复制到Production,因为它会读取每个源代码行,但只需要删除QA /,因为它会动态复制..

由于

3 个答案:

答案 0 :(得分:1)

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

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

编辑:测试并更正rsync行。

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

答案 1 :(得分:0)

这不是复制目录并重命名吗?

cp -r QA Production

答案 2 :(得分: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