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