合并两个目录 shell pk python

shell 合并两个同名目录

假设存在a_shell目录

$ tree a_shell
a_shell
└── srv
    ├── bb.txt
    └── work
        └── hel
            └── cc.txt

假设存在b_shell目录

b_shell/
├── src_md.md
└── srv
    └── work
        └── hel
            ├── cc
            │   └── cc.md
            ├── cc.md
            └── dd.md

合并两个目录 b_shell目录的内容到a_shell中

cp -rp b_shell/* a_shell

结果:

a_shell
├── src_md.md
└── srv
    ├── bb.txt
    └── work
        └── hel
            ├── cc
            │   └── cc.md
            ├── cc.md
            ├── cc.txt
            └── dd.md

python 合并两个同名目录

假设存在a_py目录

$ tree a_py
a_py
└── srv
    ├── bb.txt
    └── work
        └── hel
            └── cc.txt

假设存在b_py目录

b_py/
├── src_md.md
└── srv
    └── work
        └── hel
            ├── cc
            │   └── cc.md
            ├── cc.md
            └── dd.md

合并两个目录 b_py目录的内容到a_py中

新建 merged_same_name_dir.py

import os
import shutil
import sys
origin_dir=sys.argv[1]
dest_dir= sys.argv[2]
for folder_name, subfolders,filenames in os.walk(origin_dir):
    print folder_name,subfolders,filenames
    dst_folder_name = folder_name.replace(origin_dir, dest_dir, 1)
    print folder_name,dst_folder_name
    if not os.path.exists(dst_folder_name):
        os.makedirs(dst_folder_name)
    for filename in filenames:
       dst_name = os.path.join(dst_folder_name, filename)
       origin_name = os.path.join(folder_name, filename)
       print "copy {} to {}".format(origin_name, dst_name)
       shutil.copy2(origin_name, dst_name)
$ python2 merged_same_name_dir.py b_py a_py
b_py ['srv'] ['src_md.md']
b_py a_py
copy b_py/src_md.md to a_py/src_md.md
b_py/srv ['work'] []
b_py/srv a_py/srv
b_py/srv/work ['hel'] []
b_py/srv/work a_py/srv/work
b_py/srv/work/hel ['cc'] ['cc.md', 'dd.md']
b_py/srv/work/hel a_py/srv/work/hel
copy b_py/srv/work/hel/cc.md to a_py/srv/work/hel/cc.md
copy b_py/srv/work/hel/dd.md to a_py/srv/work/hel/dd.md
b_py/srv/work/hel/cc [] ['cc.md']
b_py/srv/work/hel/cc a_py/srv/work/hel/cc
copy b_py/srv/work/hel/cc/cc.md to a_py/srv/work/hel/cc/cc.md

结果:

$ tree a_py
a_py
├── src_md.md
└── srv
    ├── bb.txt
    └── work
        └── hel
            ├── cc
            │   └── cc.md
            ├── cc.md
            ├── cc.txt
            └── dd.md

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值