我需要一些帮助才能用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 /,因为它会动态复制..
由于
答案 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